Ruby on rails 如何在Rails的两个模型中验证属性的唯一性?

Ruby on rails 如何在Rails的两个模型中验证属性的唯一性?,ruby-on-rails,Ruby On Rails,我有两个模型,大学和公司,它们都有名称属性。我正在使用mailboxer gem,以便两者都可以充当messagable。我的问题是,在我为邮件收件人添加了自动完成后,我意识到我必须找到的唯一值是我必须发送邮件的地方是大学或公司的名称 所以,现在我尝试为这两个模型强制这个属性的唯一性。这可能吗?如果可能,如何实现?一种方法是使用继承。你可以有这样的东西: 随便吧 Class Whatever < ActiveRecord::Base .... validates :name, unique

我有两个模型,大学和公司,它们都有名称属性。我正在使用mailboxer gem,以便两者都可以充当messagable。我的问题是,在我为邮件收件人添加了自动完成后,我意识到我必须找到的唯一值是我必须发送邮件的地方是大学或公司的名称


所以,现在我尝试为这两个模型强制这个属性的唯一性。这可能吗?如果可能,如何实现?

一种方法是使用继承。你可以有这样的东西:

随便吧

Class Whatever < ActiveRecord::Base
....
validates :name, uniqueness: true
Class which
Company.rb

Class Company < Whatever
Class公司
University.rb

Class University < Whatever
大学班级
一种方法是使用继承。你可以有这样的东西:

随便吧

Class Whatever < ActiveRecord::Base
....
validates :name, uniqueness: true
Class which
Company.rb

Class Company < Whatever
Class公司
University.rb

Class University < Whatever
大学班级
一种方法是使用继承。你可以有这样的东西:

随便吧

Class Whatever < ActiveRecord::Base
....
validates :name, uniqueness: true
Class which
Company.rb

Class Company < Whatever
Class公司
University.rb

Class University < Whatever
大学班级
一种方法是使用继承。你可以有这样的东西:

随便吧

Class Whatever < ActiveRecord::Base
....
validates :name, uniqueness: true
Class which
Company.rb

Class Company < Whatever
Class公司
University.rb

Class University < Whatever
大学班级
您应该使用自定义验证,如:

company.rb

validates :name, uniqueness: true
validate :name_not_on_universities

private
def name_not_on_universities
    uname=University.where(:name => self.name).first
    uname.nil?
end

同样,对于另一个模型,您应该使用自定义验证,如:

company.rb

validates :name, uniqueness: true
validate :name_not_on_universities

private
def name_not_on_universities
    uname=University.where(:name => self.name).first
    uname.nil?
end

同样,对于另一个模型,您应该使用自定义验证,如:

company.rb

validates :name, uniqueness: true
validate :name_not_on_universities

private
def name_not_on_universities
    uname=University.where(:name => self.name).first
    uname.nil?
end

同样,对于另一个模型,您应该使用自定义验证,如:

company.rb

validates :name, uniqueness: true
validate :name_not_on_universities

private
def name_not_on_universities
    uname=University.where(:name => self.name).first
    uname.nil?
end

类似地,对于另一个模型,我在方法的末尾添加了这个
,除非uname.nil?错误.add(:name,“ready used”)end
我在方法
的末尾添加了这个,除非uname.nil?错误.add(:name,“ready used”)end
我在方法
的末尾添加了这个,除非uname.nil?错误.add(:name,“ready used”)end
我在方法
的末尾添加了这个,除非uname.nil?错误。添加(:名称,“已使用”)结束