ruby-on-rails - 为什么当我执行 @user.email 时它返回 null,但是 @user[ :email] works well?

标签 ruby-on-rails ruby

我是 ruby 初学者,这是我的代码:

@user = User.find_by_username('myname', :select => 'users.email')
email = @user.email

为什么变量“email”返回空值?但是当我使用下面的代码时,它返回了正确的结果。

email = @user[:email]

顺便说一句,即使我删除了 :select,问题仍然存在,这太奇怪了。

对象似乎没有问题,这是我使用@user.to_yaml时的结果

--- !ruby/object:User
attributes:
  email: xxx@gmail.com

最佳答案

我已经尝试了几种方法(覆盖 email 方法,将其从 attr_accessible 中删除,从 schema.rb 中删除电子邮件列) , 但它始终保持工作状态。

我们通过问题的评论找到了答案,attr_accessor就是问题所在。

总结一下:永远不要将 attr_accessor 用于您的 Model 属性!

关于ruby-on-rails - 为什么当我执行 @user.email 时它返回 null,但是 @user[ :email] works well?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427360/

相关文章:

ruby-on-rails - 在多个条件下有效地获取记录

ruby-on-rails - 无法刷新错误数组

ruby-on-rails - PostgreSQL + Rails 并发说明

javascript - 我可以使用Ajax切换div吗?

ruby-on-rails - Rails 4 在单独的 Controller 中搜索多个模型

ruby-on-rails - 在 Rails 中本地化 "Sign in"和 "Sign up"

ruby - 使用 Paperclip gem,如何根据方向修改应用于上传的样式尺寸?

ruby - 为什么只获取第一个链接?

ruby-on-rails - 在 Godaddy 共享主机上安装 Ruby

javascript - 由于 Uglifier Punc 错误,无法预编译 Rails Assets