6
這是我第一次使用枚舉與軌道4,我遇到了一些問題,有幾個考慮骯髒的解決方案,並要檢查是否有到位任何更優雅的解決方案:軌道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
但是這似乎沒有做任何事情,我該如何解決這個問題?有沒有人有類似的經歷?