0

我试图在 rails 中找到特定模型属性的值。这是我在用户控制器的“创建”方法中的代码:

@user = User.find(1, :select => :money)
existing_money = @user
puts "#{existing_money}"

在我的 Heroku 日志中,我将看到以下输出的变体,而不是该特定用户的 :money 整数(使用 :id 1)

#<User:0x00000004e7cbc0>

有什么想法吗?谢谢!

4

2 回答 2

2
@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语句应该返回属性值,而不是封装属性的对象。

于 2012-06-27T11:53:46.043 回答
1

由于 existing_money 只是您看到的对象 ID 的对象。
当你想要钱属性时,你也必须引用它。

puts "#{existing_money.money}"
于 2012-06-27T11:35:29.243 回答