我有两种模式: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
好的,谢谢,我会阅读它。但是如果我不使用状态机(我是编码方面的新手),我该怎么办? –