【问题标题】:Association using has_many :through problem使用 has_many 的关联:通过问题
【发布时间】:2011-07-02 16:01:28
【问题描述】:

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

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

现在我有一个特定的 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

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

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

【问题讨论】:

    标签: ruby-on-rails-3 activerecord


    【解决方案1】:

    您可以访问ProductPurchases,反之亦然,使用两个非常简单的语句,如下所示:

    some_product = Product.find(some_product_id_or_find_query).purchases
    some_purchases = Purchase.find(some_purchase_id_or_find_query).products
    

    您尚未定义 User 和任何 Purchase 之间的关系,我认为这将是另一个 HABTM 关联,​​因此您可以像使用 Product->Purchases and Purchases->Product 一样访问它们.

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

    【讨论】:

    • 这是我在用户和产品之间的关联以及购买类用户
    【解决方案2】:

    如果User has_many 产品和购买,那么你会引用他们喜欢,可能在你users_controller 显示操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2010-12-28
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多