有人能解釋這兩者之間的區別:的Ruby語法(導軌型)
說我有一個型號產品
該模型裏面,我有:
self.price
self[:price]
我假設一個調用一個屬性(產品價格),而另一個調用名爲'價格'的方法?
如果這是真的,哪個是哪個?
有人能解釋這兩者之間的區別:的Ruby語法(導軌型)
說我有一個型號產品
該模型裏面,我有:
self.price
self[:price]
我假設一個調用一個屬性(產品價格),而另一個調用名爲'價格'的方法?
如果這是真的,哪個是哪個?
Rails將這些模型屬性創建爲訪問器,這些訪問器動態創建獲取/設置值的方法。它的樂趣,以及在你自己的班級使用,看看這裏:http://ruby-doc.org/core/Module.html#method-i-attr_accessor
兩個調用一個方法:
第一個調用的方法:price
。
第二個調用方法:[]
,傳遞:price
作爲參數。
您可以檢查通過運行
self.method(:[])
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]>
基本上任何時候你想知道,在方法的來源,你可以使用Object#method
。
謝謝你的解釋。 – Brad
因此,如果我創建自己的方法具有與屬性相同的名稱,那麼我的方法會被調用而不是rails的默認值? – Brad
下面是一篇文章,詳細說明您可能想要完成的任務:http://stackoverflow.com/questions/373731/override-activerecord-attribute-methods – ddubs