【发布时间】:2012-08-08 20:31:17
【问题描述】:
我有一个Transaction 模型。一个事务有一个seller_id 列和一个buyer_id。两者都填充了User ID。
所以:
class Transaction
belongs_to :seller, :class_name => 'User'
belongs_to :buyer, :class_name => 'User'
end
_
class User
has_many :selling_transactions, :class_name => 'Transaction', :foreign_key => 'seller_id'
has_many :buying_transactions, :class_name => 'Transaction', :foreign_key => 'buyer_id'
end
我想做的是在User 上添加一个has_many 来关联不完整的交易,无论User 是卖方还是买方。
class User
has_many :incomplete_transactions, :class_name => 'Transaction', :conditions => ???
end
_
我用纯 SQL 写出来,得到了我想要的结果。我的 SQL 中的联接是:
left outer join transactions t on ((t.seller_id = users.id and t.buyer_id is NULL) or (t.buyer_id = users.id and t.seller_id is NULL))
如何将 join 转换为 has_many 关联?
编辑:
我希望将不完整事务保留为 ActiveRecord::Relation (而不是数组),所以我可以执行类似 user.incomplete_transactions.limit(15) 的操作
谢谢。
【问题讨论】:
标签: sql ruby-on-rails ruby ruby-on-rails-3 associations