rails验证父范围中的唯一性

时间:2012-09-24 19:40:18

标签: ruby-on-rails ruby-on-rails-3

我有这些模型:

subdomain
company
tool
code

代码belongs_to工具,工具到公司和公司到子域。
我想验证子域中代码的唯一性。我怎样才能做到这一点? 我知道如何使用范围在工具范围内获得唯一性,如下所示:

validates :codevalue, :uniqueness => {:scope => :tools_id}

但如何为上述两个父母的范围做到这一点?

我正在使用最新的rails版本。

1 个答案:

答案 0 :(得分:3)

我用这样的自定义验证解决了它:

def validate_uniqueness_in_subdomain
  Barcode.where(:value => self.value).each do |code|
    next if code.eql?(self)
    if (self.tool.company.subdomain.id  == code.tool.company.subdomain.id)
      errors.add(:unique_error, "This barcode is already in use")
      break
    end
  end
end