我是RoR的新手 - 我有三个模型:Customer
,Job
和Note
。客户拥有Jobs,客户和Jobs都可以拥有Notes。有一种特殊的方法可以在Rails中处理这种类型的关系,或者如果我与Note有一个正常的belongs_to关系会有效吗?
我担心的问题是包含customer_id
和job_id
字段的注释,但只有一个字段可用于单个记录(即特定注释可以指任何一个记录或者一个客户,但从来没有这两个),并且如果有一个列在一半时间内为空,那么数据库设计不是很好。
我是在想这个,还是有什么东西我不清楚?
答案 0 :(得分:4)
我建议使用多态关联,因为它更灵活,可扩展,更容易实施。所需模型如下:
class Note < ActiveRecord::Base
belongs_to :notable, :polymorphic => true
end
class Customer < ActiveRecord::Base
has_many :notes, :as => :notable
end
class Job < ActiveRecord::Base
has_many :notes, :as => :notable
end
迁移
create_table :notes do |t|
t.references :notable, :polymorphic => {:default => 'Photo'}
end
有关多态关联的详细信息,我建议google