Ruby on rails Rails:ActiveRecord在设置随机布尔属性时验证失败
我试图通过种子设定将布尔值保存在模型中 201511300142\u创建职责状态。rbRuby on rails Rails:ActiveRecord在设置随机布尔属性时验证失败,ruby-on-rails,ruby-on-rails-4,rails-activerecord,rails-models,seeding,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,Rails Models,Seeding,我试图通过种子设定将布尔值保存在模型中 201511300142\u创建职责状态。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,
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
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
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或“真”、“假”也不适用;除非我喜欢隐式true,否则它会保存值1;但我需要随机布尔值。以下是错误:
ActiveRecord::RecordInvalid: Validation failed: Active can't be blank
{
"affiliate_status": [
"can't be blank"
]
}
如何在模型中保存随机值?如果将活动对象设置为lambda对象,然后在设置值时调用它会怎么样 试试这个:
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] }
非常有帮助。只是为了补充一下
我有一个boolean字段,我试图在我的rails6应用程序中使用它进行验证
validates :affiliate_status, presence: true
但它失败了。我得到了一个错误:
ActiveRecord::RecordInvalid: Validation failed: Active can't be blank
{
"affiliate_status": [
"can't be blank"
]
}
以下是我解决问题的方法:
我必须将验证更改为:
validates :affiliate_status, presence: true
致:
就这些
我希望这能有所帮助否仍然获取ActiveRecord::RecordInvalid:验证失败:无法激活blank@James,好的,我认为您应该验证是否包含active(感觉好像我不久前在布尔字段方面遇到了类似的问题)<代码>验证:活动,包含:{in:[true,false]}。试试看