Rails 5中默认情况belongs_to为nil不可创建
class User < ApplicationRecord
end
class Post < ApplicationRecord
belongs_to :user
end
post = Post.create(title: 'Hi')
=> <Post id: nil, title: "Hi", user_id: nil>
post.errors.full_messages.to_sentence
=> "User must exist"
在Rails 4中
class User < ApplicationRecord
end
class Post < ApplicationRecord
belongs_to :user, required: true
end
post = Post.create(title: 'Hi')
=> <Post id: nil, title: "Hi", user_id: nil, created_at: nil, updated_at: nil>
post.errors.full_messages.to_sentence
=> "User must exist"
Rails 4默认required: false
如果想在Rails 5中想要允许nil, 需要添加optional: true
class Post < ApplicationRecord
belongs_to :user, optional: true
end
post = Post.create(title: 'Hi')
=> <Post id: 2, title: "Hi", user_id: nil>
本文探讨了Rails框架中模型关联belongs_to在不同版本间的默认行为变化,特别是从Rails4到Rails5的变化。文章详细介绍了如何通过optional参数控制是否允许外键为nil的情况,并对比了Rails4和Rails5之间的差异。
832

被折叠的 条评论
为什么被折叠?



