我正在尝试将所有信息从数据库表保存到 JSON,如下所示:
File.open("tmp/users.json", 'wb') {|file| file << User.all.to_json }
问题是,哈希中缺少这些列:
t.string "encrypted_password", :default => "", :null => false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
所有这些列都来自 Devise gem。 如何将它们添加到最终的 JSON 文件中?
非常感谢。
最佳答案
attr_accessible 已从 Rails 4 中删除。
尽管如此,我建议您覆盖 as_json 方法以使其正常工作。
def as_json(options=nil)
attrs = {
only: [
:id,
:email,
:confirmed_at,
:locked_at
],
methods: [:roles_list]
}
super (attrs.merge(options || {}))
end
尽管如此,我认为最好的选择是使用 ActiveModel::Serializer ( https://github.com/rails-api/active_model_serializers )。
关于ruby-on-rails - Rails - Model.all.to_json 没有放置所有 Devise 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17822707/