2014-01-09 30 views
0

對象表正在數據庫中的實例的正確術語?

id | tf  | 
    0 | false | 

Ruby代碼

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

第一種方法鏈更新的實例對象0;第二個更新的 ......到底是什麼?對象0的行?我正在爲RoR寫自己的筆記,並且當涉及到存儲在數據庫中的實例時,我一直磕磕絆絆!

+0

不是一個真正的答案,但是在開發過程中(除非你與development.rb混淆了很多),你應該看到的調試語句顯示了所有提交給數據庫的SQL。注意這一點,它應該在每種情況下實際發生的事情都具有啓發性。 –

回答

2

您會看到人們使用實例,對象和行作爲單詞來引用持久對象。做出這種區分的最佳方法是,只要您的含義不明確,就可以使用「持久」或「在數據庫中」等限定詞。在Rails中,使用「記錄」將是最準確的,符合ActiveRecord庫的約定。

+0

記錄它,然後! – Starkers

0

它們都更新一個實例。查找執行一個查詢,將數據庫中的信息加載到該對象的一個​​實例中。 tf=方法(假設這是正常功能)更改該實例的值tf,但不保存該值。該update_attributes方法是毫不誇張地(從源):

# File activerecord/lib/active_record/base.rb, line 2665 
def update_attributes(attributes) 
    self.attributes = attributes 
    save 
end 

此設置的屬性,然後調用save,只要您節省了一步。

+0

我正在談論每種方法的最終結果。 – Starkers

2

我相信這在很大程度上是個人偏好的問題。我個人使用'row'或'record'作爲'數據庫中的那件事','object'或'instance'作爲'應用程序內存中的那件事'。