Rails中Model.find()未返回数据详情(仅返回对象哈希)
解决ActiveRecord对象输出实例而非实际数据的问题
嘿,这个问题我太熟了!你看到的#<Scraper:0x00007f96f9738ce0>其实是Ruby对ActiveRecord对象的默认字符串表示——它只告诉你这是个Scraper实例和它在内存里的地址,不会自动输出你存在数据库里的属性数据。下面给你几个快速解决的办法:
直接输出特定属性:如果你只需要看某个具体字段(比如
restaurant),直接调用对象的属性方法就行:def get_info info = Scraper.find(1) puts info.restaurant # 会输出 "subway" # 或者多个属性一起输出 puts "ID: #{info.id}, Restaurant: #{info.restaurant}" end查看对象的完整属性详情:如果想一次性看到所有属性和值,用
inspect方法,它会输出对象的结构化信息:def get_info info = Scraper.find(1) puts info.inspect # 会输出类似 #<Scraper id: 1, restaurant: "subway", created_at: ...> 的完整内容 end自定义对象的默认输出格式:如果希望每次
puts这个对象时都自动显示你想要的格式,可以在Scraper模型里重写to_s方法(这是Ruby里控制对象转为字符串的核心方法):
在app/models/scraper.rb里添加:class Scraper < ApplicationRecord # ... 其他代码 ... def to_s "Scraper id: #{id}, restaurant: #{restaurant}" end end这样之后,你原来的
puts info就会直接输出Scraper id: 1, restaurant: subway,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Naji
相关产品推荐
相关产品推荐

