簡體   English   中英

Rails:保存到數據庫的表單字段默認為空而不是nil

[英]Rails: form fields saving to database defaults to empty instead of nil

據我了解,保存到數據庫的空表單字段通常默認為nil(這是我想要的)。 但是我的兩個可選表單字段保存為空(“”)而不是nil。

我不確定為什么會這樣,我已經看過: 了解Rails驗證:allow_blank做什么? 在數據庫中認為將空白值保存為nil可能是因為我正在使用allow_blank: true

我的group.rb

# meetup_urlname must be unique
validates :meetup_urlname, uniqueness: { case_sensitive: false, message: "this is already being used by a different group" }, allow_blank: true


# only validate if meetup_apikey or if meetup_urlname is non-empty
validate :url_name_valid?, :if => :meetup_urlname?
validate :api_key_valid?, :if => :meetup_apikey?

_Form.html.erb:

<%= bootstrap_form_for(@group, :html => { :multipart => true }, layout: :horizontal, label_col: "col-sm-3", control_col: "col-sm-9") do |f| %>
... 
  <h5>Import Events from Meetup</h5>

  <div class="field">
    <%= f.text_field :meetup_urlname, label: "Meetup Group's URL", type: "text", placeholder: "Enter your Meetup group's url to retrieve your events", prepend: 'http://www.meetup.com/'  %>
  </div>

  <div class="field">
    <%= f.text_field :meetup_apikey, label: 'Meetup API Key', placeholder: 'Enter your Meetup API key  (Required for advanced meetup functionality)' %>
  </div>

<%= f.hidden_field :status %>
<%= f.hidden_field :audit_status %>
<%= f.hidden_field :sref %>

<div class="col-sm-10" style="padding-right: 26px;">
  <div class="actions pull-right">
    <%= f.submit 'Update Group', class: "action-btn btn-rounded btn-large" %>
  </div>
</div>

<% end %>

有沒有一種方法可以將可選表單字段另存為nil而不是默認為空? 當前有一個hack,如果表單字段返回空值,它將被覆蓋為nil。

任何反饋或見解都會有所幫助。 謝謝!

strip_attributes gem可以為您解決這個問題。

https://github.com/rmm5t/strip_attributes

請問您能發布更多背景信息嗎?

有了這里,我的想法是:

  1. ""來自視圖中的某處(請粘貼)
  2. 也許您是在:meetup_urlname上的某處調用to_s nil.to_s將返回紅寶石中的""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM