2014-04-04 58 views
0

我知道Ruby中的方法是自我限制的。我的意思是,如果我們調用一個沒有指定對象的方法,那麼它會隱式地使用自己的對象並調用相應的方法。爲什麼我們在紅寶石中使用自我

require "active_record" 
require 'sqlite3' 
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => 'test_one') 

class Account < ActiveRecord::Base 
table_name = "account_bean" // I suck at this line 
end 

按規定申報類以上和查詢ActiveRecord的爲後:

Account.table_name 

我收到「賬戶」作爲輸出,而不是「account_bean」。但是,如果我將Account定義爲如下,則輸出如預期。

class Account < ActiveRecord::Base 
self.table_name = "account_bean" 
end 

任何人都可以澄清爲什麼我們在這裏使用自我?

+0

在投票之前給出理由 – pramod

回答

3

因爲如果你不使用self,紅寶石假設你要設置名爲table_name而不是使用table_name=訪問(這是真的table_name=方法調用)的局部變量。

+0

好,但也提到,這被稱爲* setter方法*在Ruby ..而你實際上是調用方法.. +1 –

+0

即使我使用table_name =(「account_bean」)。這裏沒有運氣爲什麼? – pramod

+0

@Marek Lipka - 是的,即使我把它作爲一個方法調用,它沒有提出任何錯誤,同時我沒有得到輸出 – pramod