我想计算特定购物清单的total no of Products
,然后根据total count of products
中的ID显示该购物清单的Shopping List table
。我已经为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)
任何人都可以帮助我: -
答案 0 :(得分: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)。 / p>
然后在您的产品型号上,您可以执行类似
的操作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(数量)FROM PRODUCTS WHERE shopping_list_id =?
我不确定我是否回答了你的第二个问题,但如果你有更多问题,或者你是否想要提出其他问题,请告诉我。