我有一个应用程序,用户可以创建组(cliqs)供其他人加入。一个用户拥有该组;其他用户请求加入该组。这通过两个has_many:通过关联(请求/成员资格)来工作。就组创建和请求而言,一切似乎都很好。但是,我遇到了一个有趣的问题,我的会员资格破坏控制器行动。
额外信息:我有一个单独的控制器操作,用于删除整个组并且它有效。我将使用验证/条件渲染,仅允许所有者删除该组。
我应该如何在控制器中完成这些特定的规定?如何在视图中向特定用户显示特定选项?
以下是我的模型:(简洁起见)
用户:
class User < ActiveRecord::Base
has_one :owned_cliq, foreign_key: 'owner_id', class_name: 'Cliq', dependent: :destroy
has_many :cliq_memberships, dependent: :destroy
has_many :cliqs, through: :cliq_memberships
end
Cliqs(组):
class Cliq < ActiveRecord::Base
belongs_to :owner, class_name: 'User'
has_many :cliq_memberships, dependent: :destroy
has_many :members, through: :cliq_memberships, source: :user
end
这是我的控制器动作:
def destroy
@cliq_membership = current_user.cliq_memberships.find(params[:id])
@cliq = @cliq_membership.cliq
@cliq_membership.destroy
flash[:notice] = "You left the Cliq."
redirect_to cliqs_path
end
我的观点:
<div>
<% @cliq.members.each do |member| %>
<ul><%= link_to member.username, user_path(member) %></ul>
<% end %>
<% @cliq.cliq_memberships.each do |cliq_membership| %>
(<%= link_to "Delete Member", cliq_membership, :method => :delete %>)
<% end %>
</div>