RoR从ActiveRecord :: Relation获取属性

时间:2014-09-05 10:13:05

标签: ruby-on-rails ruby activerecord

我是RoR的新手。请告诉我如何从ActiveRecord :: Relation获取属性?例如,我写道:

@user = User.where(code: 123)

接下来我想采用属性ID

id = @user.id

但这种方法不起作用。提前致谢

4 个答案:

答案 0 :(得分:2)

如果您想找到code == 123的单个用户,可以使用find_by方法,如下所示:

@user = User.find_by(code: 123)

它会返回User个实例,因此您可以在其上调用id方法。

编辑:如果您在4.x版本之前使用Rails,则可以使用动态find_by_code查找程序:

@user = User.find_by_code(123)

答案 1 :(得分:2)

使用.where 时会为您提供active record relation,因此您无法直接在其上找到ID,因为它不是单个模型对象的关系。

<强>修正:

你可以做到

@user = User.where(code: 123).first

OR

您可以使用dynamic finders

@user = User.find_by_code(123)

答案 2 :(得分:0)

您正在使用where子句返回数组。使用它像:

@user = User.where(code: 123).first

以上是不正确的查询方式。因此,您也可以编写代码来查找用户:

@user = User.find_by_code(123)

通过以上两种方式获得单个对象,您可以从中找到任何属性。 @user.id

答案 3 :(得分:0)

我猜您遗失firstwhere会返回array个对象,因此您需要先使用该对象从数组中取出

这样做

@user = User.where(code: 123).first
id = @user.id