Ruby on rails 表单输入要求字段不为空

Ruby on rails 表单输入要求字段不为空,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我正在将我的应用程序从rails 4.2迁移到5.2,在这个迁移过程中,我偶然发现了一个错误,我不知道如何修复。这段代码是为我编写的,因为当时我没有完成它的线索。我的桌子是给人的,桌子里有老板和非老板,这些非老板需要能够依附于老板 在新开发区,当我提交表格更新一个人时,“Boss”必须为null我得到以下信息: 1错误禁止保存此人:Boss必须存在 控制器: def edit @person = Person.find(params[:id]) end 型号: belongs_to :

我正在将我的应用程序从rails 4.2迁移到5.2,在这个迁移过程中,我偶然发现了一个错误,我不知道如何修复。这段代码是为我编写的,因为当时我没有完成它的线索。我的桌子是给人的,桌子里有老板和非老板,这些非老板需要能够依附于老板

在新开发区,当我提交表格更新一个人时,“Boss”必须为
null
我得到以下信息:
1错误禁止保存此人:Boss必须存在

控制器:

def edit
    @person = Person.find(params[:id])
end
型号:

belongs_to :boss, class_name: 'Person'
has_many :subordinates, class_name: 'Person', foreign_key: 'boss_id'

validates_presence_of :user_name, :position, :fname, :lname 
模式:

t.integer "boss_id"
t.index ["boss_id"], name: "index_people_on_boss_id"
表格:


禁止此人获救:
…许多领域。。。 老板

我不知道还有什么地方可以找到这个问题的答案。

需要父对象在创建时默认存在。如果要在没有父对象的情况下创建子对象,将收到[“必须存在”]错误消息,因此对象无效

如果您想要这种行为,您需要通过以下选项:

#person.rb
belongs_to :boss, class_name: 'Person', optional: true

属于\u,要求父对象在创建时默认存在。如果要在没有父对象的情况下创建子对象,将收到[“必须存在”]错误消息,因此对象无效

如果您想要这种行为,您需要通过以下选项:

#person.rb
belongs_to :boss, class_name: 'Person', optional: true

显示表单的代码。@MaxVinícius表单代码添加到post。显示表单的代码。@MaxVinícius表单代码添加到post。这非常有效。非常感谢。我很好奇,我对很多这方面都很陌生,我在4.2中使用的上述代码,在5.2的更新中是否有什么改变,使得这段代码需要可选的修改器?谢谢@lostrennie看看这个宝石:@lostrennie这是Rails 5中引入的:它工作得非常好。非常感谢。我很好奇,我对很多这方面都很陌生,我在4.2中使用的上述代码,在5.2的更新中是否有什么改变,使得这段代码需要可选的修改器?谢谢@lostrennie看看这个宝石:@lostrennie这是Rails 5中引入的: