1

大きな注意点:私の会社ではRails2を使用しています。だから私はActiveRecord2からの答え(存在する場合)を探しています。

reload現在のメモリ内の値を呼び出したり上書きしたりせずに、データベースから属性の最新の値をフェッチするためのメソッドがActiveRecordにすでに含まれていますか?

例えば:

p = Person.find(123)

# Now the in-memory value is "Joe", which would be overwritten
# if I called reload
p.nickname = "Joe"

# I want something like this to execute the equivalent of:
# SELECT 'nickname' FROM persons WHERE id = 123;
nickname_from_db = p.get_current_value(:nickname)

私が求めていることは、自分で実装するのが非常に簡単であることを理解しています。私が求めていることを実行するActiveRecordメソッドがすでに存在する場合、私は車輪の再発明をしたくありません。

4

2 に答える 2

3

オプションを使用できselectます。

Person.find(123, :select => "nickname")

于 2013-03-01T01:26:50.527 に答える
0

ダーティ属性にアクセスして、属性の以前の値を取得できます

>> p = Product.first
>> p.name # foo
>> p.name = 'bar'
>> p.changes['name'] # ['foo', 'bar']
于 2013-03-01T01:23:36.387 に答える