Ruby on rails Rails 3使用条件验证唯一性

Ruby on rails Rails 3使用条件验证唯一性,ruby-on-rails,validation,unique,Ruby On Rails,Validation,Unique,我有一个带有布尔字段默认值的模型帖子。帖子属于用户。我想确保用户只有一个默认(例如设置为true)帖子。我试过这个: validates :default, uniqueness: { scope: :user_id }, if: :default? 但它允许创建两篇带有默认值:true,用户id:1 你能帮帮我吗 另外,这种构造非常适用于验证:名称、唯一性:{scope::user_id},除非::default?布尔值可能有问题吗?尝试这种验证: validate :only_one_de

我有一个带有布尔字段默认值的模型帖子。帖子属于用户。我想确保用户只有一个默认(例如设置为true)帖子。我试过这个:

validates :default, uniqueness: { scope: :user_id }, if: :default?
但它允许创建两篇带有
默认值:true,用户id:1

你能帮帮我吗

另外,这种构造非常适用于
验证:名称、唯一性:{scope::user_id},除非::default?
布尔值可能有问题吗?

尝试这种验证:

validate :only_one_default_post_per_user

def only_one_default_post_per_user
  if Post.exists?(:user_id => user_id, :default => true)
    errors.add("Error! There is a default post for this user!")
  end
end

问题解决了。10
rails重新启动后,它才开始工作

如果您删除最后的
+1^则删除
。。如果保留了
默认值
,也很奇怪。