Я пытаюсь создать приложение, в котором у Пользователей есть много Предметов, и каждый Предмет, который они имеют через Владение, является самостоятельным объектом. Идея заключается в том, что если у меня есть элемент MacBook, например, и пользователь добавляет его в свой инвентарь, он может применять к нему атрибуты (фотографии, комментарии, теги и т. Д.), Не затрагивая непосредственно сам элемент, только свое владение.
Предмет, в свою очередь, будет собирать атрибуты из соответствующих им владений (если вам нужно перейти в / item / MacBook, а не в / user / 101 / обладание / 5). У меня есть следующие настройки моделей (пока игнорируются такие атрибуты, как фотографии).
class User
has_many :possessions
has_many :items, :through => :possessions
end
class Item
has_many :possessions
has_many :users, :through => possessions
end
class Possession
belongs_to :user
belongs_to :item
end
Мой первый вопрос: правильно ли я делаю это? Есть has_many: через правильный инструмент здесь?
Если это так, как бы я справился с наследованием классов здесь? Я мог бы не утверждать это правильно, но я имею в виду, что если бы я сделал что-то вроде
@possession = Possession.find(params[:id])
@photos = @possession.photos.all
и не было доступных фотографий, как он мог вернуться к соответствующему пункту и найти принадлежащие ему фотографии?