Пользователь может быть подключен к списку тремя способами: он может владеть им (т. Е. Создал его), он может быть участником (он голосует на нем периодически), или он может любить его , Я позаботился о первых двух случаях, но не могу получить третий («избранное») для работы. Собственность зависит от отношения has_many с «владельцем» внешнего ключа в модели «Список». Общинщик заботится об отношениях has_and_belongs_to_many с списками list_users таблицы join. Я пытаюсь сделать любимцев через has_many: через, но это не работает:Несколько отношений has_many между двумя моделями
user.rb:
has_many :owned_lists, :class_name => "List", :foreign_key=> :owner # this is for the owner/list relationship
has_and_belongs_to_many :lists # for the normal panelist/list relationship
has_many :favorites
has_many :favorite_lists, :through=> :favorites, :class_name => "List"
list.rb:
belongs_to :owner, :class_name=> "User", :foreign_key => :owner
has_many :favoriters, :through=> :favorites, :class_name => "User"
has_and_belongs_to_many :users
favorite.rb
class Favorite < ActiveRecord::Base
belongs_to :list
belongs_to :user
end
Если все идет хорошо, я хотел бы иметь возможность делать user.favorite_lists и получать ассоциацию, содержащую один или несколько списков. Прямо сейчас, я получаю «ActiveRecord :: HasManyThroughSourceAssociationNotFoundError: Не удалось найти исходную (-ие) ассоциации: favorite_list или: favorite_lists в избранной модели. Попробуйте« has_many: favorite_lists,: through =>: favorites,: source => '
Любая помощь вы можете предоставить были бы оценены
Могли бы вы descri что значит «не работает»? – BroiSatse
Я знаю, что он не отвечает на ваш вопрос, но ролик-грамм - хорошее упакованное решение для такого типа ситуации. https://github.com/EppO/rolify –