对象表
id | tf |
0 | false |
红宝石代码
Object.find(0).tf = true
Object.find(0).update_attributes(tf: true)
第一个方法链更新了对象0的实例。第二个更新......到底是什么?对象0的行?我在RoR上为自己写笔记,在涉及存储在数据库中的实例时,我一直磕磕绊绊!
答案 0 :(得分:2)
您会看到人们使用实例,对象和行作为单词来引用持久化对象。做出这种区分的最佳选择是在你的意思含糊不清时使用“持久”或“在数据库中”这样的限定符。在Rails中,使用“record”将是最准确的,与ActiveRecord库的约定保持一致。
答案 1 :(得分:2)
我认为这主要取决于个人偏好。我个人使用'row'或'record'代表'数据库中的那个东西','object'或'instance'代表'那个东西在应用程序内存中'。
答案 2 :(得分:0)
他们都更新了一个实例。 Find执行一个查询,将数据库中的信息加载到该对象的实例中。 tf=
方法(假设这是正常功能)会更改该实例的tf
值,但不会保存它。 update_attributes
方法非常简单(来自源代码):
# File activerecord/lib/active_record/base.rb, line 2665
def update_attributes(attributes)
self.attributes = attributes
save
end
设置属性,然后调用save
,只需保存一步即可。