验证唯一性嵌套模型参数

时间:2015-08-25 13:14:26

标签: validation ruby-on-rails-4 nested-forms

我有三种模式:

class User < ActiveRecord::Base
  has_many :user_countries
  accepts_nested_attributes_for :user_countries, reject_if: :all_blank
  validate :user_countries
end

class UserCountry < ActiveRecord::Base
  belongs_to :user
  belongs_to :country
end

class Country < ActiveRecord::Base
  has_many :user_countries
  has_many :users, :through => :user_countries
end

在用户创建表单中,我也可以创建user_countries。我如何在服务器中验证user_countries中country_id的唯一性。用户有许多国家:法国,​​美国......但不是例如:法国和法国。

我已将此添加到user_countries ..但它不起作用:

validates :user_id, uniqueness: {scope: :country_id, allow_blank: false}

1 个答案:

答案 0 :(得分:0)

user_country模型中尝试此操作。

class UserCountry < ActiveRecord::Base
  belongs_to :user
  belongs_to :country
  validates_uniqueness_of :user_id, scope: :country_id, allow_blank: false
end

此外,您需要创建如下所示的迁移,以便在数据库级别添加 唯一索引

add_index :user_countries, [ :user_id, :country_id ], :unique => true