0
我有User
模型和Dispute
模型。爭議包含涉及用戶的列表,以及「原告」和「被告」。我希望能夠做到這一點:製作多態ActiveRecord關聯的正確方法
Dispute.first.users
#[<User 1>, <User 2>]
Dispute.first.accuser
#<User 1>
Dispute.first.defendant
#<User 2>
因此,這裏是我的模型:
class Dispute < ApplicationRecord
has_and_belongs_to_many :users
belongs_to :accuser, polymorphic: true
belongs_to :defendant, polymorphic: true
end
class User < ApplicationRecord
has_and_belongs_to_many :disputes
has_one :user, as: :accuser
has_one :user, as: :defendant
end
遷移:
class CreateDisputes < ActiveRecord::Migration[5.0]
def change
create_table :disputes do |t|
t.references :accuser, polymorphic: true, index: true
t.references :defendant, polymorphic: true, index: true
end
end
end
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.timestamps
end
end
end
這給了我我想要的行爲,除了Dispute.new.save
錯誤,除非我將用戶分配到dispute.accuser
和dispute.defendant
。
它看起來也錯了:不應用戶有一個爭議爲的原告/被告?我似乎無法讓它工作。
嘿,工程和更有意義,謝謝。除非原告人和被告人都存在,否則「爭議」仍然存在問題。 (「原告必須存在」和「被告必須存在」的錯誤)。我想了解爲什麼 –
'belongs_to:accuser,可選:true' 'belongs_to:被告,可選:true' – fabriciofreitag