【发布时间】:2023-03-30 04:44:01
【问题描述】:
假设我们在 Rails 中有以下Post 模型:
class Post < ActiveRecord::Base
belongs_to :user
end
user 不是必需的,但是当它被设置时,我们希望它是一个有效的关联(我们不希望有一个包含不在数据库中的user_id 的帖子)。失败的测试:
expect(Post.new).to be_valid
expect(Post.new(user_id: 0)).not_to be_valid
expect(Post.new(user: User.create)).to be_valid
一种解决方案是:
validates_presence_of :user, unless: "user_id.nil?"
这将完成所需的任务,但不是很漂亮,因为我们不想为我们应用程序中的每个belongs_to 编写它。
有没有办法告诉 Rails 检查关联模型是否存在?这不是我们想要默认拥有的东西吗? (为什么我们想要一个不指向任何东西的association_id?)
【问题讨论】:
-
为什么不用外键? guides.rubyonrails.org/…
标签: ruby-on-rails validation activerecord