2012-01-04 16 views
1

これで、トランザクションモデルを作成できます。クラス名で関連付けを指定すると、どのようにアクセスしますか? 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:取引)

答えて

3

のRailsのすべての関連付けは一方通行です。

したがって、それぞれbelongs_toの場合、もう一方の側にhas_manyまたはhas_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」よりもわかりやすい名前が表示されます

関連する問題