Петиция может просто принадлежать пользователю, который ее создал, используя обычные определения отношений has_many и own_to. Затем используйте таблицу HABTM для отслеживания подписавшихся.
Для класса User я бы определил ...
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