我有一個Picture類,我想覆蓋返回「description」數據庫列值取決於某些邏輯。類方法vs數據庫字段的Rails優先
這在Rails中有效嗎?在返回數據庫列值之前,我是否總是可以依賴類來調用類方法?
# database columns for Picture class
# description => String
# parent_id => Integer
class Picture < ActiveRecord::Base
def description
if parent_id.nil?
self.description
else
description = Picture.find(parent_id).description
end
end
end
找不到在哪裏可以找到答案的Rails源代碼,所以任何幫助,將不勝感激。
謝謝!
編輯
我試圖返回一個圖片的描述取決於它是否是一個孩子或父母圖片(它們可以被嵌套)。這個例子是有點做作......我可以很容易地通過使用方法不相同的名稱數據庫列避免這種情況...如
def my_description
if parent_id.nil? # return db data since no parent
self.description
else # return parent's description if one exists
description = Picture.find(parent_id).description
end
end
我想我想在這裏不必要的複雜
我想返回一個圖片的描述取決於它是否是一個孩子或父母的圖片(他們可以嵌套)。這個例子是有點人爲的......我可以很容易地避免使用與數據庫列沒有相同名稱的方法...例如 def my_description if parent_id.nil? #返回DB數據,因爲沒有父 self.description如果存在 描述= Picture.find(PARENT_ID).DESCRIPTION 結束 結束 我想我想在這裏不必要的複雜 – 2012-07-27 04:58:43
看到 其他#回報父母的描述在原始問題中編輯。試圖使用與數據庫列相同的名稱的方法,但這似乎只是使事情不必要地複雜化 – 2012-07-27 05:04:44
您*可以*使用超級?我認爲Rails沒有定義屬性訪問器,如果已經定義了一個叫做相同的方法?只是在我自己的項目中嘗試過,看起來你是對的。酷:) – 2012-07-27 05:11:38