我在rails应用程序上构建了一个ruby,可以让用户跟踪他们的锻炼情况。用户has_many锻炼。此外,如果用户是健身房所有者,则可以创建一个盒子(健身房)。然后,用户可以通过Membership资源与该框关联。
我使用/views/boxes/show.html.erb中的远程表单为current_user创建了该关联:
<% remote_form_for Membership.new do |f| %>
<%= f.hidden_field :box_id, :value => @box.id %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= submit_tag "I am a member of this box" , :class => '' %>
<% end %>
我现在想让current_user能够删除它们的关联。如何构造链接/表单以及memberships_controller销毁操作应该是什么样的?
如果有帮助,下面是我的关联列表: 用户
class User < ActiveRecord::Base
has_many :boxes
has_many :workouts, :dependent => :destroy
end
锻炼
class Workout < ActiveRecord::Base
belongs_to :user
belongs_to :box
end
箱
class Box < ActiveRecord::Base
belongs_to :user
has_many :users, :through => :memberships
has_many :workouts, :through => :users
has_many :memberships
end
成员
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :box
end
答案 0 :(得分:0)
完成建议here的更改后,假设您已使用以下代码获取current_user和框的成员资格,
@membership = current_user.memberships.for_box(box).first
为用户创建一个链接,以删除成员资格,如下所示。
link_to 'Delete Membership', membership_path(@membership), :method => :delete
成员资格控制器应具有类似于以下内容的destroy方法。
def destroy
@membership = Membership.find(params[:id])
@membership.destroy
end
这假设您的会员控制器很安静,并且您的路线中有map.resources :memberships
。