Проверка перечисления в Rails 4

Это первый раз, когда я использую перечисления с rails 4, и я столкнулся с некоторыми проблемами, подумал о нескольких грязных решениях и хотел проверить, есть ли более элегантные решения:

Это моя часть, относящаяся к миграции таблицы:

create_table :shippings do |t|
  t.column :status, :integer, default: 0
end

Моя модель:

class Shipping < ActiveRecord::Base
  enum status: { initial_status: 0, frozen: 1, processed: 2 }
end

И у меня есть этот бит на мой взгляд (используя простую форму для):

= f.input :status, :as => :select, :collection => Shipping.statuses, :required => true, :prompt => 'Please select', label: false

Итак, в моем контроллере:

  def create
    @shipping = Shipping.create!(shipping_params)

    if @shipping.new_record?
      return render 'new'
    end

    flash[:success] = 'Shipping saved successfully'
    redirect_to home_path
  end

private

  def shipping_params
    params.require(:shipping).permit(... :status)
  end

Поэтому, когда я отправляю форму создания и огонь действия создания, я получаю эту ошибку проверки:

'1' is not a valid status

Поэтому я подумал, что знаю, что проблема связана с типом данных, поэтому я добавил этот бит в модель:

before_validation :set_status_type

  def set_status_type
    self.status = status.to_i
  end

Но, похоже, это ничего не делает, как мне решить это? У кого-нибудь был подобный опыт?

Ответы на вопрос(1)

Ваш ответ на вопрос