ActionController ::在Model:Rails 5中,允许分配给字段的参数为nil

时间:2018-07-24 13:28:44

标签: ruby-on-rails ruby ruby-on-rails-5

我正在将代码从Rails 3迁移到Rails 5.1.6和Ruby 2.5。我面临着奇怪的问题。我在模型中编写了after_initialize回调并将默认值分配给字段。该字段为serialize,当该字段中有nil时,它将在回调中分配默认值。

这是我的清晰图片代码

class MyModel < ActiveRecord::Base
  serialize :settings

  after_initialize :set_default_setting

  def set_default_setting
    self.settings = self.settings || {my_fields: ["a", "b", "c"]}
  end
end

这是我的Rails控制台日志:

[1] 2.5.0 :135 > md = MyModel.find(1)
=> #<MyModel:0x00007fe433608348
 id: 1,
 settings: <ActionController::Parameters  permitted: >,
 created_at: Tue, 16 Jan 2018 08:45:26 GMT +00:00,
 updated_at: Fri, 04 May 2018 10:50:20 BST +01:00>

[2] 2.5.0 :136 > md.settings
=> <ActionController::Parameters  permitted: >
[3] 2.5.0 :137 > md.settings.nil?
=> false

我的问题是为什么将<ActionController::Parameters permitted: >添加到nil字段中?当我执行nil?方法时,它应该返回我nil。上面的代码可以在Rails 3.2和Ruby 2.0上正常工作,我将从中升级到Rails 5和Ruby 2.5

任何帮助将不胜感激。

先谢谢您

0 个答案:

没有答案