::的ActionView ::模板错误

时间:2014-01-27 02:40:32

标签: ruby-on-rails ruby

我正在尝试从哈希user_id调用role_idcurrent_role字段。当我尝试拨打current_role.role_idcurrent_role.user_id时,收到以下错误消息:

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?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

这是因为current_roleActiveRecord::Relation而不是RoleMembership的实例。

要获取role_id关系中第一个RoleMembership的{​​{1}},请使用:

current_role

如果您想将current_role默认设置为第一个current_role.first.role_id ,则应将RoleMembership定义更新为以下内容:

current_role

使用更新的def current_role RoleMembership.where(...).first end 定义,您就可以使用current_role,它将返回预期的current_role.role_id