在连接表中查找条目

时间:2014-11-08 23:11:51

标签: ruby-on-rails

好吧,这不应该太糟糕但我正在努力。基本上我有一个has_many :through关联,涉及user模型,collective模型和membership模型(连接表)。我的会员模型有4个字段:id,user_id,collective_id和一个名为owner的bool。我要做的是测试current_user是否是集体展示页面上集体的所有者。不幸的是,当我尝试这样做时,我得到一个“未定义的方法'所有者'”错误。

还值得一提的是,我已经确保在将用户添加到组中时正确创建了成员关联,因此我认为这种关联不是问题所在。

Collective的show.html.erb

<% if @collective.memberships.where(:user_id => current_user.id).owner? %>
    <%= link_to '(Add User)', '#' %>
<% end %>

集体管理员

def show
    @collective = Collective.find(params[:id])
end

会员资格模式

class Membership < ActiveRecord::Base
    belongs_to :user
    belongs_to :collective

    validates :user_id, presence: true
    validates :collective_id, presence: true
    validates :owner, presence: true    
end

非常感谢帮助。非常感谢!

1 个答案:

答案 0 :(得分:1)

您正在ActiveRecord::Relation数组对象上调用实例方法。

添加first以接收单个对象Membership

@collective.memberships.where(:user_id => current_user.id).first.owner?

另一种方法是使用exists?

@collective.memberships.exists?(user_id: current_user.id, owner: true)