Rails 5中belongs_to默认不允许nil

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>

猜你喜欢

转载自blog.csdn.net/wlchn/article/details/78541199
今日推荐