1

Я пытаюсь сохранить логическое значение в модели с помощью затравки онпроверка не выполняется для ActiveRecord в определении случайной булевой атрибут

20151130014042_create_duty_statuses.rb

class CreateDutyStatuses < ActiveRecord::Migration 
    def change 
    create_table :duty_statuses, :id => false do |t| 
     t.string :id, limit: 36, primary: true, null: false 
     t.string :remark, :limit => 256 
     t.boolean :active, :required => true, default: false 
     t.string :employee_id,limit: 36, :required => true 
     t.timestamps null: false 
    end 
    end 
end 

duty_status.rb

class DutyStatus < ActiveRecord::Base 
    include UUIDHelper 
    belongs_to :employee 
    validates_length_of :remark , maximum: 256, message: "description must be less than 256 characters" 
    validates_presence_of :active 
end 

seeds.rb

dutyStatus = DutyStatus.new(remark: Faker::Lorem.sentence, employee: myEmployee) 
dutyStatus.active = [false,true].sample 
dutyStatus.created_at = rand(720..72000).hours.ago 
dutyStatus.save 

Если я использую

dutyStatus.active = [false,true].sample 

Это ничего в базе данных не записывается. ни 0,1, ни «истина», «ложь»; если я не делаю неявное истинное значение, оно сохраняет значение 1; но мне нужны случайные логические значения. Вот ошибка:

ActiveRecord::RecordInvalid: Validation failed: Active can't be blank 

Как сохранить случайные значения в модели?

ответ

0

Что делать, если вы устанавливаете активный объект лямбда, а затем вызываете его при настройке?

Попробуйте это:

active = -> { [false,true].sample } 
dutyStatus = DutyStatus.new(remark: Faker::Lorem.sentence, employee: myEmployee) 
dutyStatus.active = active.call 
dutyStatus.created_at = rand(720..72000).hours.ago 
dutyStatus.save 

Я думаю, что это имеет какое-то отношение проверки наличия булево поле. Я думаю, вы должны подтвердить включение active:

validates :active, inclusion: { in: [true, false] } 
+0

Нету все еще получаю ActiveRecord :: RecordInvalid: Не удалось выполнить проверку: Активный не может быть пустым – james

+0

@James, Хорошо, я думаю, вы должны подтвердить включение активных (чувствует как будто у меня была аналогичная проблема с булевым полем некоторое время назад). 'validates: active, include: {in: [true, false]}'. Попробуйте –

+0

yep it works! благодаря – james

 Смежные вопросы

  • Нет связанных вопросов^_^