Rails 3验证条件的唯一性

时间:2012-07-20 13:06:50

标签: ruby-on-rails validation unique

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

validates :default, uniqueness: { scope: :user_id }, if: :default?

但它允许使用default: true, user_id: 1

创建两个帖子

你能帮帮我吗?

P.S。这种结构适用于validates :name, uniqueness: { scope: :user_id }, unless: :default?可能是布尔有问题吗?

2 个答案:

答案 0 :(得分:2)

尝试此验证:

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

答案 1 :(得分:-4)

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