ruby-on-rails - 覆盖 as_json 或 to_json 模型类名

标签 ruby-on-rails json activerecord

我想在 AR 模型上调用 to_json 时修改类名。

IE。

Book.first.to_json
 #=> "{\"book\":{\"created_at\":\"2010-03-23 

Book.first.to_json(:root => 'libro')
 #=> "{\"libro\":{\"created_at\":\"2010-03-23 

有没有办法做到这一点?

最佳答案

要与 Rails 3 兼容,请覆盖 as_json而不是 to_json .它是在 2.3.3 中引入的:

def as_json(options={})
  { :libro => { :created_at => created_at } }
end

确保 ActiveRecord::Base.include_root_in_json = false .当您调用 to_json , 幕后 as_json用于构建数据结构,ActiveSupport::json.encode用于将数据编码为 JSON 字符串。

关于ruby-on-rails - 覆盖 as_json 或 to_json 模型类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556468/

相关文章:

ruby - 扩展 ruby​​ 特征类以加载 CarrierWave

ruby-on-rails - 从 FactoryGirl.lint 获取错误

ruby-on-rails - 未捕获的未知 cloud_name

javascript - Django + Ajax返回数据报错

c# - json序列化格式化

ruby-on-rails - 我应该如何以 DRY 和数据库有效的方式存储本地化值 - Ruby on Rails/i18n

ruby-on-rails - 有没有一种方法可以将 rails 中的值设置为 nil 并保存?

ruby-on-rails - 关于验证错误的回形针错误的附件 URL

仅包含在单页 Rails 中的 CSS 文件不适用于服务器

javascript - 有效地查找数组中对象的索引