Я ищу совет о том, как лучше создать «список наблюдения» для приложения, над которым я сейчас работаю.
Модели следующим образом:
# user.rb
has_many :items
# item.rb
belongs_to :user
Мне нужно добавить список наблюдения, где пользователи могут добавлять в избранное определенные элементы, не вступая в права собственности.
Я пробовал следующее:
# user.rb
has_many :items
has_many :watches
has_many :items, :through => :watches
# watch.rb (user_id:integer, item_id:integer)
belongs_to :user
belongs_to :item
# item.rb (user_id:integer)
belongs_to :user
has_many :watches
has_many :users, :through => :watches # as => :watchers
Это работает, но не дает желаемого ответа. Среди прочего я получаю ошибку AssosciationTypeMismatch: Watch expected, got Item
, из-за которой я думаю, что у меня неправильно настроены модели.
В идеале, я хотел бы иметь возможность делать такие вещи, как user.watches << item
, чтобы начать смотреть объект, и item.watchers
, чтобы получить коллекцию людей, наблюдающих за элементом.
Может кто-нибудь предложить некоторые предложения здесь?