You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:43:00