我想知道在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

09-17 06:01