ruby-on-rails - Rails collection_select : save null instead of empty string when 'blank' option selected

标签 ruby-on-rails ruby

我有以下用于表单中选择框的代码:

<div class="field">
  <%= f.label :user_id %>
  <%= f.collection_select :user_id, User.all, :id, :name, include_blank: true %>
</div>

它显示以下选择选项:

select options

I noticed that when the blank option is selected, what actually gets saved in the database is an empty string: ''

我不想在选择 blank 选项时保存空字符串。相反:我想保存 null

我试图覆盖 rails 模型中的 setter,但没有成功:

def text_value=(value)
  write_attribute(:name, nil) and return if value.empty?
  super
end

我如何在应用程序级别执行此操作?我知道我可以在数据库级别指定默认值,但似乎这可能更适合应用程序级别。

最佳答案

这个有效:

def text_value=(value)
  if value.empty?
    write_attribute(:name, nil)
  else
    super
  end
end

关于ruby-on-rails - Rails collection_select : save null instead of empty string when 'blank' option selected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387221/

相关文章:

ruby - 在 Mavericks 上禁用 Ruby 的应用程序小睡

ruby-on-rails - 使用 rvm 在 rails 3 中进行 rake 任务和 cron

jquery - 如何阻止远程表单提交?

ruby-on-rails - rails : how do i change values in table from nil to string inside the rails console?

ruby-on-rails - Plivo ruby 类冲突

ruby-on-rails - % 在下面的代码中做了什么?

ruby-on-rails - 如何使用 Grape 和 MongoDB 在 Ruby on Rails 中正确测试 'post'(创建)方法

ruby - 寻找在 Ruby 中轻松实现类文件/IO 类的方法

ruby-on-rails - 使用 friendly_id 一段时间后启用历史记录

ruby-on-rails - rails : Delete associated records on object destroy