【发布时间】:2011-07-28 22:21:46
【问题描述】:
我正在通过执行以下操作创建的模型对象上使用to_json 方法:
user = User.find(1)
当我执行 user.to_json 时,很多属性都丢失了,包括编码 JSON 字符串中的 user.id。我从 User 模型中添加为 attr_accessible 的所有属性似乎都在那里,但其他属性都没有。也许这就是 to_json 正在做的事情,但我认为将 id 添加到 attr_accessible 是不行的。
解决这个问题的正确方法是什么?
更新
这似乎是 Devise 的一个特定问题。如果我从 user.rb 中注释掉以下内容,一切都会按预期进行:
devise :rememberable, :trackable, :token_authenticatable, :omniauthable
【问题讨论】:
-
这真的很奇怪......如果你明确输入
user.to_json(:except => :created_at)。 -
您尝试从控制台工作吗? to_json 之前的对象呢?是否设置了所有属性?
-
对象确实在 to_json 之前包含 id(在控制台中验证)。我试过 (:except => :created_at) 并没有这样做。我想知道 Devise 是否对我的对象做了一些奇怪的事情。
标签: ruby-on-rails json ruby-on-rails-3 devise