ruby-on-rails - Rails - Model.all.to_json 没有放置所有 Devise 属性

标签 ruby-on-rails ruby json model attributes

我正在尝试将所有信息从数据库表保存到 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/

相关文章:

ruby-on-rails - Rails 生成迁移不起作用

ruby-on-rails - Rails 4 中的子域链接

ruby-on-rails - ruby on rails 中无休止的滚动分页,每页一个查询?

ruby-on-rails - 缓存日期早于 1900 年的模型时出现编码错误

php - 通过 PHP 回显 json 数组

ruby-on-rails - Rails 6 + webpack 错误 : Uncaught TypeError: $(. ..).popover 不是函数

ruby-on-rails - 使用 PayPal gem 进行点对点支付

ruby-on-rails - Ruby - 实现自定义排序

python - 从列表中打印字典会在每一行上放置一个字符

angularjs - HTTP POST 变成 OPTIONS AngularJS