我有兩種模式:Ownership
和Loan
。Rails最佳實踐 - 參數或多態模型?
爲了驗證交易,我在兩種型號上都使用了布爾值:current
,agreed
,available
。但它可能是多餘的。所以我在問我自己是否應該創建另一個模型,讓我們把它稱爲status
,用這三個布爾值,並且增加與所有權和貸款的多態關聯。
您對此有何看法?我應該從兩個模型中刪除布爾值並創建一個包含每個布爾值的多態模型?或者我應該保持它的方式?
我有兩種模式:Ownership
和Loan
。Rails最佳實踐 - 參數或多態模型?
爲了驗證交易,我在兩種型號上都使用了布爾值:current
,agreed
,available
。但它可能是多餘的。所以我在問我自己是否應該創建另一個模型,讓我們把它稱爲status
,用這三個布爾值,並且增加與所有權和貸款的多態關聯。
您對此有何看法?我應該從兩個模型中刪除布爾值並創建一個包含每個布爾值的多態模型?或者我應該保持它的方式?
我不認爲你需要這裏的polymorphic
關聯,但將這些字段移動到單獨的模型聽起來像是一個好主意,因爲從您的描述中可以看出,這可能是一個簡單的查找表。
我會創造一個Status
模型和定義這些三個屬性爲這樣:
# Schema Information
# id :integer not null, primary key
# status :string(8) not null
#
class Status < ActiveRecord::Base
CURRENT = find_by_status('current')
AGREED = find_by_status('agreed')
AVAILABLE = find_by_status('available')
end
然後在你的Ownership
和Loan
車型我想補充一個status_id
場持有的該Status.id
。你可以訪問這些狀態常量,如Status::CURRENT
等等。
那些常數是什麼? – apneadiving
@apneadiving,這些是OP在兩個模型中的布爾字段。你對狀態機的想法聽起來很有趣。你能展示一個快速樣本嗎? – vee
看這裏:https://github.com/pluginaweek/state_machine – apneadiving
我通常只使用狀態機,只有狀態字段。狀態機是組織活動/回調的好方法 – apneadiving
好的,謝謝,我會閱讀它。但是如果我不使用狀態機(我是編碼方面的新手),我該怎麼辦? –