使用类名指定关联时,如何访问它? Rails 3

时间:2012-01-04 01:39:12

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

所以让我有一个交易模型。

Transactions.rb有:

 belongs_to :buyer, :class_name => "User"
 belongs_to :seller, :class_name => "User"

使用current_user访问登录的用户。

我怎样才能做类似current_user.transactions的事情? (这不起作用,因为事务没有user_id列)或类似current_user.transactions.buyer?

谢谢!

(也是用户模型has_many:transactions)

1 个答案:

答案 0 :(得分:3)

Rails中的所有关联都是单向的。

因此,对于每个belongs_to,您需要在另一方添加has_manyhas_one

我建议你想要这样的东西;

class User
  has_many :transactions_as_buyer,
    :class_name => "Transaction",
    :foreign_key => :buyer_id

  has_many :transactions_as_seller,
    :class_name => "Transaction",
    :foreign_key => :seller_id
end

现在你可以说;

current_user.transactions_as_seller.map(&:buyer)

获得一系列买家。

当然,根据您的应用,您的名字可能比“transactions_as_buyer / seller”更好