1

我想计算total no of Products特定购物清单的数量,然后total count of products根据其在Shopping List table.I 中的 id 显示该购物清单的。我在产品表中创建了 shopping_list 的引用

我的购物清单如下:-

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(确保默认为 0,而不是 nil)。

然后在您的产品模型上,您可以执行类似的操作

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 = ?

我不确定我是否回答了您的第二个问题,但如果您有更多问题或者您想问其他问题,请告诉我。

于 2013-03-02T07:12:32.397 回答