所以我已經在模型中覆蓋了一個字段getter,所以在訪問該字段時它可以做一些事情,但它似乎是在我訪問字段時沒有被觸發就好像我的模型是一個Hash,例如:Getter方法被稱爲哈希時不被觸發Rails
class Group < ActiveRecord::Base
def field_name
p "Yeah printing"
self.field_name_before_type_cast
end
end
如果我做g = Group.first.field_name
它打印在控制檯Yeah printing
但如果我不g = Group.first['field_name']
它只類型轉換後返回現場,並且不執行,它覆蓋的功能屬性。
我怎麼能重寫一個字段,所以當它被調用,就好像我的模型是一個散列或正常的方式,它總是返回類型轉換前的字段?
我不確定它會工作,但你可以嘗試Group.first.send(:field_name)。 – BrunoFacca
@BrunoFacca它按預期工作,無論如何這不是我的問題的解決方案 –
爲什麼你會期望重寫一個方法改變完全不同的,不相關的方法的行爲呢? –