在数据库中的实例的正确术语?

时间:2014-01-09 22:01:04

标签: ruby-on-rails terminology

对象表

  id | tf      |
   0 | false   |

红宝石代码

Object.find(0).tf = true  
Object.find(0).update_attributes(tf: true) 

第一个方法链更新了对象0的实例。第二个更新......到底是什么?对象0的行?我在RoR上为自己写笔记,在涉及存储在数据库中的实例时,我一直磕磕绊绊!

3 个答案:

答案 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,只需保存一步即可。