我想知道在Ruby on Rails中,什么是建模请求和用户之间关系的最佳方法。
以下是限制条件
-用户拥有请愿书
-用户创建请愿
-一个用户可以是请愿书的作者
-所有用户都可以签署请愿书
这是一个多态性病例吗?
最佳答案
请愿书可以简单地属于使用normal has-many创建请愿书的用户,并且属于关系定义。然后使用HABTM表跟踪签名者。
对于我要定义的用户类。。。
has_many :created_petitions, :class_name => 'Petition', :foreign_key => 'creator_id'
has_and_belongs_to_many :signed_petitions, :class_name => 'Petition', :association_foreign_key => 'signer_id'
对于请愿课我会定义。。。
belongs_to :creator, :class_name => 'User'
has_and_belongs_to_many :signers, :class_name => 'User', :foreign_key => 'signer_id'
那么迁移将是。。。
create_table :petitions_signers, :id => false do |t|
t.integer :petition_id
t.integer :signer_id
end
add_column :petitions, :creator_id, :integer