我是 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/