我有3个模型,用户,商店和产品。关系为User has_many stores
和Product has_many stores
。在这种情况下,如果我执行current_user.stores,我会获得特定用户拥有的一组商店。但现在我想要退回商店,我可以访问某些产品 product_id ,我可以做
current_user.stores.where(:product_id=>1)
,但事情就在我的情况下,我无法访问 product_id ,所以我可以用其他方式来实现这一点,也许 has_many,范围但我不知道怎么做。请有人帮帮我吗?
def my_account
#@product=Product.find(params[:id]) ,this cant find the id
if user_signed_in?
@my_stores=current_user.stores.where(:product_id=>@product.id)
end
end
视图
<% @my_stores.each do |store| %>
<%=store.name%>
<%end%>
答案 0 :(得分:0)
(store
,product
)之间存在many-to-many
关系,因此您可能需要引入中间模型,如下所示:
class User < ActiveRecord::Base
has_many :stores
end
class Store < ActiveRecord::Base
belongs_to :user
has_many :store_products
has_many :products, :through => :store_products
end
class StoreProduct < ActiveRecord::Base
belongs_to :store
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :store_products
has_many :stores, :through => :store_products
end
现在,如果有用户,您可以按如下方式获取商店:
user.stores # all stores associated with the user
所有具有给定产品的商店
user.stores.joins(:products).where("products.id = ?", 1234)