2017-05-09 62 views
1

有人能解釋這兩者之間的區別:的Ruby語法(導軌型)

說我有一個型號產品

該模型裏面,我有:

self.price 
self[:price] 

我假設一個調用一個屬性(產品價格),而另一個調用名爲'價格'的方法?

如果這是真的,哪個是哪個?

回答

0

Rails將這些模型屬性創建爲訪問器,這些訪問器動態創建獲取/設置值的方法。它的樂趣,以及在你自己的班級使用,看看這裏:http://ruby-doc.org/core/Module.html#method-i-attr_accessor

+0

因此,如果我創建自己的方法具有與屬性相同的名稱,那麼我的方法會被調用而不是rails的默認值? – Brad

+0

下面是一篇文章,詳細說明您可能想要完成的任務:http://stackoverflow.com/questions/373731/override-activerecord-attribute-methods – ddubs

4

兩個調用一個方法:

  • 第一個調用的方法:price

  • 第二個調用方法:[],傳遞:price作爲參數。

您可以檢查通過運行

self.method(:[]) 
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]> 

基本上任何時候你想知道,在方法的來源,你可以使用Object#method

+0

謝謝你的解釋。 – Brad