rails has_many 3个表之间的关联

时间:2010-12-04 18:57:09

标签: ruby-on-rails has-many-through

我有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 ...我已经尝试了很多东西,但我无法获得正确的代码......正确的论点......

2 个答案:

答案 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的实验分支。我不喜欢使用“实验性”的东西。