У меня есть приложение, в котором пользователи могут создавать автомобили. Они также могут нравиться автомобилям, и я хочу создать связь между ними. Автомобили, которые они создали, принадлежат им и Автомобили, которые им нравятся, принадлежат им в контексте их симпатии. Для этого я создал свои ассоциации следующим образом:Полиморфная ассоциация с той же моделью Ruby on Rails 4
Ассоциация пользователей:
class User < ActiveRecord::Base
has_many :cars
has_many :cars, -> {distinct}, through: :likes
end
Ассоциация автомобилей:
class Car < ActiveRecord::Base
belongs_to :users
has_many :likes
has_many :users, -> { distinct }, through: :likes
end
Как Ассоциация:
class Like < ActiveRecord::Base
belongs_to :user
belongs_to :car
end
Проблема заключается в том, что до того, как у меня был мой пользователь has_many cars, через объявленные отношения. Раньше я мог называть @ user.cars, и он представлял бы автомобили пользователя. Теперь он возвращает коллекцию автомобилей, которые понравился пользователю. Мне нужны методы для каждой коллекции.
Когда я пытаюсь: User.likes.cars
Я получаю
No Method error
и журнал консоли просматривает Подобные записи и до сих пор не возвращает автомобили, даже если понравившиеся записи имеют car_id поля.
Я посмотрел на кучу вопросов, но им трудно понять их. Я также попытался определить методы в модели, и ничего не работает. Любая помощь приветствуется.
Как я могу изменить свои ассоциации, чтобы у меня был запрос для пользователя User.cars (для автомобилей, созданных пользователем) и User.likes.cars (для автомобилей, которые понравились пользователю)?