如何保存与 rails 5 的关联
How to save associations with rails 5
我有一个学生模型,它继承自使用 STI 的用户模型。用户模型 has_one profile
。从表单创建新学生时,学生控制器的创建操作成功生成了学生模型的实例以及学生配置文件的实例,可以通过 @student.profile
检查。在此阶段,student.id、profile.id 和 profile.user_id 为零。在 rails 4 下,我可以只做 @student.save,学生和关联的模型都会被保存。但是,在rails 5下,@student.save returns false,有错误信息
:"profile.user"=>["can't be blank"]
如何在 rails 5 中保存 @student 实例及其关联?
相关代码为
def create
@student = build_student(params[:student])
if @student.save
我设置了
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
用于我的模型,可以保存而不属于用户。
我有一个学生模型,它继承自使用 STI 的用户模型。用户模型 has_one profile
。从表单创建新学生时,学生控制器的创建操作成功生成了学生模型的实例以及学生配置文件的实例,可以通过 @student.profile
检查。在此阶段,student.id、profile.id 和 profile.user_id 为零。在 rails 4 下,我可以只做 @student.save,学生和关联的模型都会被保存。但是,在rails 5下,@student.save returns false,有错误信息
:"profile.user"=>["can't be blank"]
如何在 rails 5 中保存 @student 实例及其关联?
相关代码为
def create
@student = build_student(params[:student])
if @student.save
我设置了
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
用于我的模型,可以保存而不属于用户。