首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord - NoMethodError

ActiveRecord - NoMethodError
EN

Stack Overflow用户
提问于 2013-04-25 19:09:39
回答 1查看 618关注 0票数 0

这些AREL查询在Rails 3中不起作用。有人能帮我破译这个错误吗?

代码语言:javascript
复制
NoMethodError (undefined method `id' for #<ActiveRecord::Relation:0xabf6f44>):
  app/controllers/admin_controller.rb:206:in `save_user'

所有这些都会导致相同的错误,如上面所示,

代码语言:javascript
复制
  @existing = Privilege.find(:first, :conditions => "b2b_user_id = #{@user.id} AND vendor_id = #{@vendor_id}")

  @existing = Privilege.find_by_sql("SELECT * FROM b2b_privileges WHERE b2b_user_id = ? AND vendor_id = ? LIMIT 1",@user.id,@vendor_id)

  @existing = Privilege.where(:b2b_user_id => @user.id, :vendor_id => @vendor_id)

但当我改变这一点时:

代码语言:javascript
复制
@user = B2bUser.where("id = ?",params[:id])

对此:

代码语言:javascript
复制
@user = B2bUser.find_by_id(params[:id])

查询可以工作。为什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-25 19:56:45

当您使用方法"where“时得到的只是一个关系,把它看作一个仍未执行的查询,然后您必须调用一个方法来检索数据,例如:首先,所有,最后,to_a等等

代码语言:javascript
复制
@user = B2bUser.where("id = ?",params[:id]) #this is just an active record relation
@user = B2bUser.where("id = ?",params[:id]).first #this is your object

读一些关于关系的文章,他们真的很有趣,关系

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16222836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档