1

特定のショッピング リストの をカウントし、その id に従ってそのショッピング リストtotal no of Productsの を表示したいです。product テーブルに shopping_list の参照を作成しました。total count of productsShopping List table

私の買い物リスト表は次のとおりです:-

id serial NOT NULL,
  shopping_list_name character varying(255),
  shopping_list_status character varying(255) DEFAULT 'OPEN'::character varying,
  total_items character varying(255) DEFAULT 0,
  created_at timestamp without time zone NOT NULL,
  updated_at timestamp without time zone NOT NULL,
  deleted integer NOT NULL DEFAULT 0,
  CONSTRAINT shopping_lists_pkey PRIMARY KEY (id)

私の製品テーブルは次のとおりです:-

 id serial NOT NULL,
  shopping_list_id integer NOT NULL,
  product_name character varying(255) DEFAULT 'null'::character varying,
  product_category character varying(255),
  quantity integer,
  status character varying(255) DEFAULT 'OPEN'::character varying,
  deleted integer NOT NULL DEFAULT 0,
  CONSTRAINT products_pkey PRIMARY KEY (id)

誰でも私を助けてください:-

4

1 に答える 1

1

だからあなたは次のようなものを持つでしょう

class ShoppingList < ActiveRecord::Base
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :shopping_list
end

次に、買い物リストの商品数を取得するために

@my_shopping_list.products.count

そして量を得るために

@my_shopping_list.products.sum(:quantity)

ショッピング リストにある種のキャッシュを設定できるので、ShoppingList に products_quantity という名前の整数フィールドがあるとします。これはデフォルトで 0 です (デフォルトでは nil ではなく 0 にするようにしてください)。

次に、製品モデルで、次のようなことができます

class Product < ActiveRecord::Base
  after_create :update_shopping_list

  def update_shopping_list
    shopping_list.update_attribute(:products_quantity, shopping_list.products_quantity + self.quantity)
  end
end

その場合、クエリ SELECT SUM(quantity) FROM PRODUCTS WHERE shopping_list_id = ? を実行する必要はありません。

2 番目の質問にお答えできるかわかりませんが、さらに質問がある場合、または別の質問をしたい場合はお知らせください。

于 2013-03-02T07:12:32.397 に答える