Rails-проверить, существует ли запись В имеет много ассоциаций
Я не уверен, правильно ли сформулирован мой вопрос.
У меня есть три модели: User
, Item
, и UserItem
.
user has_many :user_items
user has_many :items, through :user_items
item has_many :user_items
item has_many :users -> {uniq}, through :user_items
item belongs_to :user
user_item belongs_to :user
user_item belongs_to :item
Мне нужен способ увидеть, есть ли у пользователя элемент, чтобы сделать if
операторы в моих представлениях элементов, но вот подвох, user_items имеют enum status: [ :pending, approved]
. Поэтому мне нужно посмотреть, есть ли у current_user
определенный элемент :pending
.
Например, когда пользователь посещает страницу просмотра item1, у меня есть действие Show item_controller declare @item = Item.find_by_id(params[:id])
. Но тогда что я могу сделать с этим @item
, чтобы увидеть, если пользователь есть ли этот предмет?
3 ответа:
Но тогда что я могу сделать с этим @ элементом, чтобы увидеть, есть ли у пользователя этот элемент?
Я думаю, что вы упускаете из виду методы моделирования. Например, если вы добавили метод в модель элементов с именем belongs_to_user_in_pending_state, вы сможете вызвать
@item.belongs_to_user_in_pending_state(current_user)
в любом месте, где вам это нужно.def belongs_to_user_in_pending_state(user) if self.user_items.pending.select {|s| s.user == user}.count > 0 return true else return false end end