我无法从模型中获取id值。
我的代码:
session["game_space"] = params[:game_space_id]
@player_space = PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id)
session["player_space"] = @player_space.id #<<<<===== The error occurs here
redirect_to "show",:id => @player_space.id
错误讯息:
Error: undefined method `id' for #<ActiveRecord::Relation []>
你能帮我解决这个问题吗?
答案 0 :(得分:14)
问题:
Where子句返回活动记录关系对象,它是一种数组(集合)。所以你必须选择对象来调用id方法。
@player_space = PlayerSpace.where(game_space_id:session [&#34; game_space&#34;],user_id:current_user.id).first
您的查询结果/集合没有任何行/对象。所以调用#first
将返回nil。因此,结果nil#id
将再次导致错误。
希望你明白这一点!
答案 1 :(得分:2)
您正试图在ActiveRecord关系上获得id
。试试这个:
@player_space = PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id).first
然后获取@player_space
答案 2 :(得分:2)
您正在获得ActiveRecord::Relation
课程,而不是模型对象。您可以从关系中的项目中获取ID。如果您确定自己准备回复一件商品,那么您可以这样做:
PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id).first