我正在使用 to_json
我通过执行以下操作创建的模型对象上的方法:user = User.find(1)
当我这样做时 user.to_json
,缺少很多属性,包括user.id
来自编码的 JSON 字符串。似乎我从 User 模型中添加为 attr_accessible 的所有属性都在那里,但没有其他属性。也许这就是 to_json 正在做的事情,但我认为添加 id
到 attr_accessible 是不行的。
解决这个问题的正确方法是什么?
更新
这看起来是 Devise 的一个特定问题。如果我从 user.rb 中注释掉以下内容,一切都会按预期进行:devise :rememberable, :trackable, :token_authenticatable, :omniauthable
最佳答案
我没有检查过,但我相信 Devise 会为您做到这一点;它仅通过 attr_accessible 包含某些属性。
在任何情况下,解决此问题的正确方法是覆盖 as_json
像这样的方法:
def as_json(options = nil)
{
my_attr: my_attr,
etc: etc
}
end
这是一个简单的散列,它是在 AR 中生成 JSON 的一种非常强大的方法,而不会弄乱
to_json
方法。
关于ruby-on-rails - Ruby on Rails 3 - to_json 不包括所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866480/