gpt4 book ai didi

ruby-on-rails - 为什么我得到一个 ActiveRecord::Relation 对象?

转载 作者:行者123 更新时间:2023-12-03 09:53:44 24 4
gpt4 key购买 nike

我试图从数据库中获取汽车实例,

theCar = Car.where(:name => 'TOYOTA')
puts theCar.user_name

我收到错误消息: 未定义的方法`user_name'
ActiveRecord::Relation:0xb6837b54


为什么我收到了 ActiveRecord::Relation 对象,而不是 汽车 目的??可能是什么原因?顺便说一下,我在迁移文件中查询了汽车。我正在使用 Rails 3。

最佳答案

你得到它是因为你正在使用延迟加载。在您调用某个或多个对象之前没有加载任何内容。

事实上,您的查询将返回一个对象数组:名称为 TOYOTA 的所有汽车。如果您知道只有一个具有此名称的 CAR,您可以执行以下操作:

theCar = Car.where(:name => 'TOYOTA').first
# or
theCar = Car.first(:name => 'TOYOTA')
# or
theCar = Car.find_by_name('TOYOTA')

如果有很多名为 TOYOTA 的汽车:
theCars = Car.where( :name => "TOYOTA" ).all
theCars.map(&:user_name)
#=> ["Jhon", "Paul" ...]

关于ruby-on-rails - 为什么我得到一个 ActiveRecord::Relation 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com