我想知道是否有办法通过删除以下至少一个条件或删除confirmations.each do
块代码来实现此代码的目标。感觉就像是这些has_many :through
关联迫使我编写这个笨拙的代码,但我假设我很可能以错误的方式做事。
在下面的代码中,我们在views/appointments/show.html.erb
基本上,如果用户确认他们正在参加约会,我想给他们一个取消确认的选项。第一条if
语句检查他们是否已确认出席。
由于用户可能已确认参加了多个约会,因此我会遍历所有用户的确认,这就是confirmations.each do
代码的原因。
然后我必须创建删除链接以确认此@appointment,因此在第二个if
语句中我比较以确保确认的约会_id 与我们所在页面的@appointment.id 相同。
<% if current_user.confirmations.map(&:appointment_id).include?(@appointment.id) %>
<% current_user.confirmations.each do |confirmation| %>
<% if confirmation.appointment_id == @appointment.id %>
<%= link_to "delete", confirmation_path(confirmation), method: :delete,
data: { confirm: "You sure?" } %>
<% end %>
<% end %>
<% end %>
用户.rb
has_many :confirmations
has_many :appointments, through: :confirmations
确认.rb
belongs_to :appointment
belongs_to :user
约会.rb
has_many :confirmations
has_many :users, through: :confirmations