访问has_many关联中的id

时间:2012-02-01 01:53:08

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有3个模型,用户,商店和产品。关系为User has_many storesProduct 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%>

1 个答案:

答案 0 :(得分:0)

storeproduct)之间存在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)