我有3个模型Webinar
,Participant
,并加入Participant_webinar
,这些模型与has_many through:
相连
class Webinar < ApplicationRecord
has_many :participant_webinars
has_many :participants, through: :participant_webinars
class Participant < ApplicationRecord
has_many :participant_webinars
has_many :webinars, through: :participant_webinars
class ParticipantWebinar < ApplicationRecord
belongs_to :webinar
belongs_to :participant
accepts_nested_attributes_for :participant
我需要在participant_webinar
表中作为布尔值添加的用于连接的额外列(一些参与者订阅了网络研讨会,但没有参加)。
我不知道如何编辑或更新连接的属性
我尝试过使用嵌套属性,但是它不能保存或复制表中的字段:
<%= f.fields_for :participant_webinars do |ff| %>
<%= ff.label :connected %>
<%= ff.check_box :connected %>
<% end %>
我明白了:
participant_webinars: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
connected: '1'
permitted: false
converted_arrays: !ruby/object:Set
hash:
*1: true
commit: Update Participant
controller: participants
action: update
id: '1'
permitted: false
即使我拥有允许的参数:
def participant_params
params.require(:participant).permit(:first_name, :last_name, :email, :qualification, :city, :file, webinar_ids: [], particpant_webinars: [:id, :webinar_id, :participant_id, :notconnected])
end
首先,我创建了网络研讨会,然后在新参与者中有一个集合来选择网络研讨会,并且我还希望在与参与者连接的每个网络研讨会上都有一个用于连接的复选框。
答案 0 :(得分:0)
已解决:
class Participant < ApplicationRecord
has_many :participant_webinars
has_many :webinars, through: :participant_webinars
accepts_nested_attributes_for :participant_webinars,
reject_if: proc { |attributes| attributes[:connected].blank? }, allow_destroy: true
validates :email, presence: true, uniqueness: {case_sensitive: false}
并进行编辑:
`<% if @participant.webinars.any? %>
<div class="form-group" >
<div class="row" >
<div class="col-sm-8 col-sm-offset-2" > <hr><hr>
<%= f.fields_for :participant_webinars do |d| %>
<%= d.hidden_field :participant_id, value: @participant.id %>
<%= render 'participants/participantconnected', d: d %>
<% end %>
</div>
</div>
</div>
<% end %>`
部分:
`<li class="list-group-item"><% webinar = d.object.webinar %>
<%= webinar.name %>
<span class="pull-right"><%= d.check_box :connected %> Connected?</span></li>`