考慮一個模型用戶:在Rails模型中「重載」一個字段的最佳方式是什麼?
User(id: integer, name: string, email: string, status: string)
當我構建的應用程序,地位是在數據庫中的字段。但是新的需求意味着更改,以便在某些情況下動態計算狀態。例如,在星期日,如果他們的姓氏以A開頭,那麼他們的狀態是「不好」。
我想類似以下封裝在用戶模式這一功能:
Class User < ActiveRecord::Base
def status
if is_sunday && last_name.starts_with('A')
return 'not ok'
else
return status
end
end
end
什麼是做到這一點的最好方法是什麼?如果上面的代碼確實有效,那麼使用方法覆蓋數據庫中的字段似乎是不好的做法。
另外,我可以創建一個方法get_status
使用上面的代碼。但在這種情況下,我需要在整個應用程序中更改對status
的每個引用。這聽起來不太好。
fwiw,我完全可以用這種方法作爲解決方案。我認爲添加'get_status'更令人困惑,因爲您有點創建第二種檢索用戶狀態的方法。 – thewillcole 2012-04-06 22:21:10