我有三个模型 - 用户。游戏和活动。我有一个视图应该显示用户没有活动记录的游戏。我无法弄清楚如何编写排除已经有活动的游戏的查询。
当我做这两个版本(在控制器中)时,它不起作用(我收到错误undefined method 'game_id' for #<ActiveRecord::Relation:0x69eab40>
)
版本 1
def index
if current_user
@activities = current_user.activities.game_id
@games = Game.where("id NOT IN (?)", @activities )
end
end
第 2 版
def index
if current_user
@activities = current_user.activities
@activity_ids = @activities.game_id
@games = Game.where("id NOT IN (?)", @activity_ids )
end
end
但是,当我这样做时,它可以工作:控制器:
def index
if current_user
@activities = current_user.activities
@games = Game.where("id NOT IN (?)", @activities.collect {|p| p.game_id} )
end
end
我担心这样做,因为我不确定它的可扩展性。我从这个 [question] 中得到了这样做的想法,但是人们说这个解决方案是不可扩展的(这对那个提问者来说不是问题)。1