我希望能够在我的数据库中放置条目,其中制造商将被多次代表,但不是制造商和型号的相同组合。
所以“索尼(制造商),电视(型号)”还可以“索尼(制造商),OtherTv(型号)”,但第三个条目“索尼(制造商),电视(型号)”自制造商和型号组合后就不行了不是唯一的。我尝试使用:key => true
验证,但它似乎不起作用。而且我猜不到validates_uniqueness_of :manufacturer AND :model
这样的事情。那你怎么做的?
class Tvs
include DataMapper::Resource
property :id, Serial
property :manufacturer, String, :key => true
property :model, String, :key => true
validates_uniqueness_of :
end
答案 0 :(得分:5)
你实际上可以选择:
class Tvs
include DataMapper::Resource
property :id, Serial
property :manufacturer, String, :unique_index => :manufacturer_model
property :model, String, :unique_index => :manufacturer_model
validates_uniqueness_of :model, :scope => :manufacturer
end
这也将为您提供数据库中的唯一索引。
答案 1 :(得分:0)
没关系。 这似乎完成了这项工作:
class Tvs
include DataMapper::Resource
property :id, Serial
property :manufacturer, String, :unique_index => true
property :model, String, :unique_index => true
validates_uniqueness_of :model, :scope => :manufacturer
end
答案 2 :(得分:0)
class Tvs
include DataMapper::Resource
property :id, Serial
property :manufacturer, String, :unique_index => :manufacturer_model
property :model, String, :unique_index => :manufacturer_model
validates_is_unique :model, :scope => :manufacturer
end
我需要修改示例以使用“validates_is_unique”来使其工作。
答案 3 :(得分:0)
如果删除property :id Serial
行,最终会得到一个复合键(制造商,型号),不会允许特定制造商使用重复的模型。