Mel*_*lon 5 ruby-on-rails rails-migrations ruby-on-rails-3
我试图从数据库中获取一个汽车实例,
theCar = Car.where(:name => 'TOYOTA')
puts theCar.user_name
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息:ActiveRecord :: Relation的未定义方法`user_name':0xb6837b54
为什么我得到ActiveRecord :: Relation对象,而不是Car对象?可能是什么原因?顺便说一句,我在我的迁移文件中查询汽车.我正在使用Rails 3.
fl0*_*00r 15
你得到它是因为你使用的是Lazy Loading.在调用某些对象或对象之前,不会加载任何内容.
事实上,您的查询将返回一个对象数组:所有名称为TOYOTA的汽车.如果您知道只有一个具有此名称的CAR,您可以这样做:
theCar = Car.where(:name => 'TOYOTA').first
# or
theCar = Car.first(:name => 'TOYOTA')
# or
theCar = Car.find_by_name('TOYOTA')
Run Code Online (Sandbox Code Playgroud)
如果有很多汽车名称TOYOTA:
theCars = Car.where( :name => "TOYOTA" ).all
theCars.map(&:user_name)
#=> ["Jhon", "Paul" ...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6408 次 |
| 最近记录: |