我不确定我的问题是否表达正确。
我有三个模型: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
语句。但是这里有一个问题,用户项目具有枚举状态:[: pending,approved]
。因此,我需要查看current_user
是否拥有特定的:pending
项目。
例如,当用户访问item1的视图页面时,我希望在item_controller的show操作中声明@item = Item.find_by_id(params[:id])
。但是,我如何使用此@item
来查看用户是否拥有此项目呢?
self
。select
会在评估块之前将整个待处理的user_items
集合加载到内存中,因此,如果集合中有大量记录,可能会超出内存限制。return
。user_items.pending.select {|s| s.user == user}.count > 0
,它已经返回了布尔值。return
关键字。 - Andrey Deineko