1

モデルフィールドと指定された検証でmongoidを使用しています:

field :status, type:String, :default=>'Active'
validates :status, :inclusion=>{:in=>%w(Active, Done, Canceled, Merged)}, :allow_nil=>true, :allow_blank=>true

フォームにはステータスフィールドがないため、POST されていないはずなので、作成時には nil です。

= simple_form_for([@user, @task], :html => {:class=>'form-horizontal',:'data-type'=>'html'}) do |f|
  - if @task.errors.any?
    .error_explanation
      .alert.alert-error
        The form contains
        = pluralize(@task.errors.count, 'error')
      %ul
        - @task.errors.full_messages.each do |msg|
          %li=msg
  .form-inputs
    = f.error_notification
    = f.association :project, :collection => current_user.projects.all
    = f.input :description, :as => :text, :input_html => {:rows => 5}
    = f.input :priority, :as=>:radio_buttons, :collection=>1..4, :item_wrapper_class=>'inline'
    = f.input :due_date

    .control_group.select.optional
      = f.label :assigned_to, :class=>'select optional control-label', :for => 'assigned_to_id'
      .controls
        = f.collection_select :assigned_to_id, User.all, :id, :username, :class => 'select optional'

  .form-actions
    = f.button :submit, :class => 'form-button btn-primary', 'data-loading-text' => 'Submitting...'

ただし、デフォルト値「アクティブ」を設定しているにもかかわらず、これはまだ取得されています。これは明らかに、包含の検証のために提供された配列にあります。

Status is not included in the list

なぜまだこのエラーが発生するのですか?

前もって感謝します!

4

1 に答える 1

3

これはあなたの問題です

%w(Active, Done, Canceled, Merged)

に変換されます

["Active,", "Done,", "Canceled,", "Merged"]

解決策はコンマを削除することです

%w(Active Done Canceled Merged)
于 2013-03-04T00:29:50.927 に答える