多态关系
Polymorphic relationship
我的问题是在公司内生成具有多态迁移的合作伙伴的记录。
合作伙伴来自我的用户集合。
这是我的表格
<%= form_with(model: [@company, @partner], remote: true) do |f| %>
<div class="form-group">
<%= f.label 'Selecciona un socio' %>
<%= f.collection_select(:partnershipable_id, User.all, :id, :name, {:prompt => 'Selecciona'}, {class: 'form-control'}) %>
</div>
<% end %>
我的模特是
app/models/partner
class Partner < ApplicationRecord
belongs_to :company
belongs_to :partnershipable, polymorphic: true
end
app/models/user
class User < ApplicationRecord
has_many :partners, as: :partnershipable
end
app/models/company
class Company < ApplicationRecord
has_many :partners, as: :partnershipable
end
将用户正确保存为合作伙伴的表单外观。
如果你想select一个多态关联,你还需要提供一个类型。
<%= form_with(model: [@company, @partner], remote: true) do |f| %>
<div class="form-group">
<%= f.label 'Selecciona un socio' %>
<%= f.collection_select(:partnershipable_id, User.all, :id, :name, {:prompt => 'Selecciona'}, {class: 'form-control'}) %>
<%= f.hidden_input(:partnershipable_type, 'User') %>
</div>
<% end %>
由于类型似乎是固定的我你也可以在接收端的控制器中设置值。
我的问题是在公司内生成具有多态迁移的合作伙伴的记录。 合作伙伴来自我的用户集合。
这是我的表格
<%= form_with(model: [@company, @partner], remote: true) do |f| %>
<div class="form-group">
<%= f.label 'Selecciona un socio' %>
<%= f.collection_select(:partnershipable_id, User.all, :id, :name, {:prompt => 'Selecciona'}, {class: 'form-control'}) %>
</div>
<% end %>
我的模特是
app/models/partner
class Partner < ApplicationRecord
belongs_to :company
belongs_to :partnershipable, polymorphic: true
end
app/models/user
class User < ApplicationRecord
has_many :partners, as: :partnershipable
end
app/models/company
class Company < ApplicationRecord
has_many :partners, as: :partnershipable
end
将用户正确保存为合作伙伴的表单外观。
如果你想select一个多态关联,你还需要提供一个类型。
<%= form_with(model: [@company, @partner], remote: true) do |f| %>
<div class="form-group">
<%= f.label 'Selecciona un socio' %>
<%= f.collection_select(:partnershipable_id, User.all, :id, :name, {:prompt => 'Selecciona'}, {class: 'form-control'}) %>
<%= f.hidden_input(:partnershipable_type, 'User') %>
</div>
<% end %>
由于类型似乎是固定的我你也可以在接收端的控制器中设置值。