【问题标题】:Finding a particular attribute's value from a model in Rails在 Rails 中从模型中查找特定属性的值
【发布时间】:2012-06-28 19:52:42
【问题描述】:
我正在尝试在 rails 中查找特定模型属性的值。这是我在用户控制器的“创建”方法中的代码:
@user = User.find(1, :select => :money)
existing_money = @user
puts "#{existing_money}"
在我的 Heroku 日志中,我将看到以下输出的变体,而不是该特定用户的 :money 整数(使用 :id 1)
#<User:0x00000004e7cbc0>
有什么想法吗?谢谢!
【问题讨论】:
标签:
ruby-on-rails
find
modelattribute
【解决方案1】:
@user = User.find(1, :select => :money)
您正在使用只有一个值的对象设置@user 实例变量,即money 值。目前,这一切只是为您节省了几个字节,省去了id、email 以及该表中的任何其他列。然而它仍然返回一个带有属性的对象,唯一的区别是你的对象只有一个属性可以调用。
existing_money = @user
鉴于@user 仍然是一个具有单个属性的对象,您现在将该对象保存在existing_money 局部变量中。您可能想要做的是*仅将 money 属性存储在此变量中。
所以你需要这个:
existing_money = @user.money
puts "#{existing_money}"
经过上述更改,这个puts语句应该返回属性值,而不是封装属性的对象。
【解决方案2】:
existing_money 只是您看到的对象 ID。
当你想要金钱属性时,你也必须引用它。
puts "#{existing_money.money}"