2016-12-05 116 views
0

我有一个使用STI从用户模型继承的学生模型。用户型号has_one profile。从表单创建新学生时,学生管理员的创建操作成功生成了学生模型的实例以及学生个人资料的实例,可以通过@student.profile进行检查。在这个阶段,student.id,profile.id和profile.user_id都是零。在rails 4下,我可以执行@ student.save,并且学生和相关模型都将被保存。然而,在导轨5,@ student.save返回false,并显示一条错误消息如何保存与rails的关联5

:"profile.user"=>["can't be blank"] 

如何保存@student实例凭借其在轨5联想?

相关的代码是

def create 
    @student = build_student(params[:student]) 
    if @student.save 

回答

0

我已成立

Rails.application.config.active_record.belongs_to_required_by_default=false 

,并在剖面模型,我已经建立

validates :user, presence: true 

这是老同学,所以很清楚为什么它不适用于rails 5。我试着在profile.rb

belongs_to user, required: true 

但这并没有工作,给人一种错误

"profile.user"=>["must exist"] 

最后,我只设置

Rails.application.config.active_record.belongs_to_required_by_default=true 

和使用optional: true为我的模型,其可以保存而不属于用户。