我的Rails项目中有两个模型(和表)。每个模型都有一个“地址”字段。
目前,我的代码集用于验证每个模型中Address的唯一性,并且在每个表上都有一个Address的索引,以防止多个连接尝试保存相同数据时出现重复。
但是,我想确保两个表格中的地址字段唯一。如同,如果地址存在于一个表中,则无法将其保存到第二个表中。
在代码中解决这个问题并不困难,但我如何在数据库级别(类似于索引)实现该检查以确保不会保存任何非唯一值?
答案 0 :(得分:2)
您最好创建一个可以自行维护唯一性的地址表。而不是在其他模型上维护地址字段,而是提供关联。它可以按如下方式完成:
class Home < ActiveRecord::Base
belongs_to :address
end
class Office < ActiveRecord::Base
belongs_to :address
end
class Address < ActiveRecord::Base
attr_accessible :body
validates :body, uniqueness: true
has_many :homes
has_may :offices
end
答案 1 :(得分:0)
在两个表中编写自定义验证器。 custom validation rails guide是一个很好的起点。 在自定义验证器中,如果该值已存在于另一个表地址字段中,则可能引发错误。