【问题标题】:Rails console, how to see object attributesRails 控制台,如何查看对象属性
【发布时间】:2017-10-23 11:37:00
【问题描述】:

当我这样做时在 Rails 控制台中

u = User.where(id: 1)

"he find the user with id = 1, but then"

u.email

我收到此错误:

NoMethodError: undefined method `email' for #<User::ActiveRecord

为什么 Rails 控制台总是在寻找方法而不是属性? 如何查看特定属性?

我这样做是因为我在应用程序中有一个方法可以通过 user_id 找到协调器,就像这样

user_id = current_user.id
coordinator = Coordinator.where(user_id: user_id)
course_id = coordinator.course_id

我收到此错误

【问题讨论】:

  • u = User.where(id: 1).first
  • 你想要User.find(1),而不是User.where(id: 1),见guides.rubyonrails.org/…
  • coordinator = Coordinator.find_by(user_id: user_id)
  • coordinator = Coordinator.find_by_user_id(user_id)
  • 谢谢大家,coordinator = Coordinator.find(some_id) 工作得很好!

标签: ruby-on-rails ruby ruby-on-rails-5 rails-console


【解决方案1】:

where 返回一个ActiveRecord::Relation 对象,它是一个数组。 email 只会存在于单个对象上。请改用User.find()。否则,请尝试 User.where().first 获取单个对象。

编辑: 正如评论者指出的那样,在这种特殊情况下,您可能更喜欢使用 find_by() 方法而不是 where

【讨论】:

  • 而不是#where + #first,最好使用#find_by
  • @yzalavin 同意了。我会更新答案以反映您的评论。
猜你喜欢
  • 2016-02-17
  • 2014-08-17
  • 2012-04-30
  • 1970-01-01
  • 2019-07-13
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多