rails has_many связь между 3 таблицами - PullRequest
0 голосов
/ 04 декабря 2010

У меня есть 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 голосов
/ 04 декабря 2010

Здесь - это статья, которая может вас заинтересовать.

Я не уверен, поддерживает ли Rails 3 вложенный has_many: through, но 2.3.5 - нет.Существует (очень старый) билет на Rails.Существует также вложенный плагин has_many: through, который имеет экспериментальную ветку для 2.3.x.Я не люблю использовать «экспериментальные» вещи.

0 голосов
/ 04 декабря 2010

Как насчет:

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}'
...