我有3个课程:用户,自行车,交易。
用户可以拥有许多自行车,而自行车只有一个用户(所有者)。 交易有一个自行车,一个用户(买方)......
在我的用户模型中,我有以下关联:
has_many :bicycles_owned, :class_name => "Bicycle",
:uniq => true, :foreign_key => "owner_id"
has_many :trans_bicycles_bought, :class_name => "Transaction",
:foreign_key => "buyer_id"
has_many :bicycles_bought, :class_name=> "Bicycle",
:through => :trans_bicycles_bought, :source => :bicycle
has_many :trans_bicycles_sold, :class_name => "Transaction",
:through => :bicycles_owned, :source => :transaction
现在我想要关联bicycles_sold
...我已经尝试了很多东西,但我无法获得正确的代码......正确的论点......
答案 0 :(得分:0)
怎么样:
has_many :bicycles_sold, :class_name => "Bicycle",
:finder_sql => 'SELECT b.* FROM bicycles AS b ' +
'JOIN users AS u ON u.id = b.owner_id ' +
'JOIN transactions AS t ON t.bicycle_id = b.id ' +
'WHERE u.id = #{id}'
答案 1 :(得分:0)
Here是您可能感兴趣的文章。
我不确定Rails 3是否支持嵌套的has_many:through,但2.3.5不支持。 Rails有一张(很老的)票。还有一个嵌套的has_many:through插件,它有一个2.3.x的实验分支。我不喜欢使用“实验性”的东西。