Я видел эту проблему несколько раз, но ничего слишком полного. У меня проблема с использованием таблицы соединений для одной модели. Например, предположим, у нас есть пользователи и Highfives. Highfives будет просто таблицей соединений для двух пользователей highfiving. Итак, у меня есть это:
class Highfive < ActiveRecord::Base
belongs_to :user1,
:class_name => "User"
belongs_to :user2,
:class_name => "User"
end
class User < ActiveRecord::Base
has_many :highfives
end
Однако, с этим я не могу сделать что-то вроде User.find (1) .highfives, так как это генерирует запрос вроде:
SELECT "highfives".* FROM "highfives" WHERE "highfives"."user_id" = 1
Действительно, я должен получить запрос вроде:
SELECT "highfives".* FROM "highfives" WHERE "highfives"."user1_id" = 1 or "highfives"."user2_id" = 1
Я полагаю, что для этого мне нужно каким-то образом изменить мою модель пользователя. Но чего мне не хватает?
Спасибо.