2014-11-08 74 views
0

好的,這不應該太糟糕,但我很掙扎。基本上我有一個has_many :through關聯,涉及user模型,collective模型和membership模型(連接表)。我的會員模型有4個字段:id,user_id,collective_id和一個名爲owner的bool。我想要做的是測試current_user是集體展示頁面上的集體所有者。不幸的是,當我嘗試這樣做時,我得到一個「未定義的方法」所有者「錯誤。在加入表中查找條目

另外值得一提的是,我已經確保在將用戶添加到組中時正確創建成員關聯,因此我認爲該關聯不成問題。

集體的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

您正在調用ActiveRecord::Relation數組對象的實例方法。使用exists?

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

啊我看到

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

另一種方式來做到這一點:

添加first接受單個對象Membership。太棒了!我有一種感覺,有一種更流暢的方式來做到這一點。 – Ben 2014-11-08 23:28:21

+0

太棒了,看看'exists?'docs(它不限於加入模型):) – mohameddiaa27 2014-11-08 23:30:32

+0

會做。謝謝! – Ben 2014-11-08 23:37:18