使用has_many的关联:通过问题

时间:2011-07-02 16:01:29

标签: ruby-on-rails-3 activerecord

我有一个应用程序,它有两个型号的产品和购买。

产品包含我系统中所有产品的列表,并且购买定义了用户进行的所有购买......

现在我有一个特定的current_user,可以查看产品和购买产品,并且他点击购买按钮,他可以看到他所做的所有购买。我创建了一个关联has_many :through并创建了一个名为purchase_products的新模型,它将购买和产品表链接在一起..

class Product < ActiveRecord::Base
  has_many :purchased_products
  has_many :purchases, :through => :purchase_products
end

class Purchase < ActiveRecord::Base
  has_many :products, :through => :purchased_products
  has_many :purchased_products
end

class PurchasedProducts < ActiveRecord::Base
  belongs_to :purchases
  belongs_to :products
end

现在我不知道如何找出哪个用户购买了哪些产品并显示他的所有购买?

另外,我在哪里指定代码以找出当前用户的所有购买?

2 个答案:

答案 0 :(得分:0)

您可以使用两个非常简单的语句来访问Product的{​​{1}} s,反之亦然:

Purchase

您尚未定义some_product = Product.find(some_product_id_or_find_query).purchases some_purchases = Purchase.find(some_purchase_id_or_find_query).products 与任何User之间的关系,我认为这将是另一个HABTM关联,因此您可以像使用Product-&gt;购买一样访问它们和购买 - &gt;产品。

你绝对应该在谷歌周围搜索这类东西,因为ActiveRecord关联有很好的记录,http://edgeguides.rubyonrails.org/association_basics.html

答案 1 :(得分:0)

如果a User has_many产品和购买,那么您可能会像在users_controller显示操作中那样引用它们:

@current_user = User.find(params[:id])
@products     = @current_user.products
@purchases    = @current_user.purchases