我正在尝试从散列user_id和role_id字段调用current_role。当我尝试调用current_role.role_id或current_role.user_id时,会收到以下错误消息:
ActionView::Template::Error (undefined method `role_id' for #<ActiveRecord::Relation::ActiveRecord_Relation_RoleMembership:0x00000103d4fbd0>):如果我尝试运行current_role.inspect,我会看到user_id和role_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_id或current_role.user_id?任何帮助都将不胜感激。
发布于 2014-01-27 02:43:33
这是因为current_role是ActiveRecord::Relation的实例,而不是RoleMembership的实例。
要获取role_id关系中的第一个RoleMembership,请使用:
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。
https://stackoverflow.com/questions/21372164
复制相似问题