2014-01-27 84 views
0

我試圖從散列current_role中調用user_idrole_id字段。當我嘗試調用current_role.role_idcurrent_role.user_id,我得到了以下錯誤消息:ActionView :: Template :: Error

ActionView::Template::Error (undefined method `role_id' for #<ActiveRecord::Relation::ActiveRecord_Relation_RoleMembership:0x00000103d4fbd0>): 

如果我嘗試運行current_role.inspect,我看到無論user_idrole_id都設置。下面是從current_role.inspect響應:

#<ActiveRecord::Relation [#<RoleMembership id: 1, user_id: 1, role_id: 2, created_at: "2014-01-27 02:25:25", updated_at: "2014-01-27 02:25:25">]> 

爲什麼我無法呼叫current_role.role_idcurrent_role.user_id?任何幫助,將不勝感激。

回答

2

這是因爲current_roleActiveRecord::Relation的一個實例,而不是RoleMembership

爲了得到第RoleMembershiprole_idcurrent_role關係,使用:

current_role.first.role_id 

如果你想CURRENT_ROLE默認爲第一RoleMembership,您應該更新您current_role定義爲類似於如下:

def current_role 
    RoleMembership.where(...).first 
end 

與更新的current_role定義,您將能夠使用current_role.role_id它將返回ŧ他預計role_id

+0

修好了!如果我只包含一個記錄的限制,我是否可以不必包含「第一個」? – evanvee

+0

@evanvee,不,使用'limit'也會返回一個'ActiveRecord :: Relation',但是有限的記錄。 – vee

相關問題