好吧,这不应该太糟糕但我正在努力。基本上我有一个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
非常感谢帮助。非常感谢!
答案 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)