0

Railsで特定のモデルの属性の値を見つけようとしています。ユーザーコントローラーの「create」メソッドのコードは次のようになります。

@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値が1つしかないオブジェクト、つまり値を使用してインスタンス変数を設定していmoneyます。今のところ、これは、、、、およびそのテーブルにある他の列などをid省略して、数バイトを節約するだけです。emailただし、それでも属性を持つオブジェクトが返されます。唯一の違いは、オブジェクトに呼び出す属性が1つしかないことです。

existing_money = @user

それ@userがまだ単一の属性を持つオブジェクトであるとすると、このオブジェクトをexisting_moneyローカル変数に保存します。おそらくやりたいことは、*moneyこの変数に属性のみを格納することです`。

したがって、これが必要になります。

existing_money = @user.money

puts "#{existing_money}"

上記の変更後、このputsステートメントは、属性をカプセル化するオブジェクトではなく、属性値を返す必要があります。

于 2012-06-27T11:53:46.043 に答える
1

present_moneyは単なるオブジェクトであるため、オブジェクトのIDが表示されます。
お金の属性が必要なため、それも参照する必要があります。

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