Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:ActiveRecord在设置随机布尔属性时验证失败_Ruby On Rails_Ruby On Rails 4_Rails Activerecord_Rails Models_Seeding - Fatal编程技术网

Ruby on rails Rails:ActiveRecord在设置随机布尔属性时验证失败

Ruby 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,

我试图通过种子设定将布尔值保存在模型中

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, :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]}。试试看