I'm not sure if my question is worded correctly.
I have three models: User
, Item
, and 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
I need a way to see if a user has an item to make if
statements in my item views But here's the catch, user_items have enum status: [ :pending, approved]
. So I need to see if a current_user
has a certain :pending
item.
For example when a user visits item1's view page I have the item_controller's show action declare @item = Item.find_by_id(params[:id])
. But then what can I do with this @item
to see if a user has this item?
Try:
current_user.items.exists?(params[:id])
Or
current_user.items.exists?(@item.id)
Extending @lei-liu's answer here. One can find if the record exists among the many or not, through: current_user.items.exists?(params[:id])
At the same time, exists?
allows one to filter through the columns besides id
, and also allows for more complicated conditions, like the following:
current_user.items.exists?('id > 3') current_user.items.exists?(name: 'some_name')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With