1

大警告:我们在我的公司使用 Rails 2。所以我正在从 ActiveRecord 2 中寻找答案(如果存在的话)。

ActiveRecord 中是否已经包含一种方法来从数据库中获取属性的最新值,而不调用reload或覆盖当前的内存值?

例如:

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 回答