我正在尝试验证我输入的数据的唯一性,因此根本没有重复。
模型
class Asset < ActiveRecord::Base
validates :Devtype, presence: true
validates_uniqueness_of :Nic1mac, :scope => [:Nic1mac, :Nic2mac, :Nic3mac, :IBmac, :SN], :allow_blank => true
validates_uniqueness_of :Nic2mac, :scope => [:Nic1mac, :Nic2mac, :Nic3mac, :IBmac, :SN], :allow_blank => true
validates_uniqueness_of :Nic3mac, :scope => [:Nic1mac, :Nic2mac, :Nic3mac, :IBmac, :SN], :allow_blank => true
validates_uniqueness_of :IBmac, :scope => [:Nic1mac, :Nic2mac, :Nic3mac, :IBmac, :SN], :allow_blank => true
validates_uniqueness_of :SN, :scope => [:Nic1mac, :Nic2mac, :Nic3mac, :IBmac, :SN], :allow_blank => true
end
这是我在类似问题中看到的推荐,但它对我不起作用。我在“Nic1mac”字段中输入了我的第一个数据。当我创建另一个条目并尝试使用相同的数据填充“Nic1mac”字段时,它会按预期停止。但是当我使用“Nic1mac”字段中的相同数据填充“Nic2mac”字段时,它允许创建记录而没有任何错误。因此,我在不同的字段中有一个重复的mac地址。另一个问题是,如果我创建一个新记录并在“Nic1mac”和“Nic2mac”中输入相同的数据,它允许创建记录而不会注意到“Nic1mac”中的数据在另一个记录中是相同的。
示例
记录一个 -
Nic1mac = 1234
记录二 -
Nic2mac = 1234(即使数据与记录1 Nic1mac中的数据相同,也不显示错误并允许创建记录)
记录三 -
Nic1mac = 1234(错误按预期出现)
Nic2mac = 1234(即使数据与记录1和2相同,也允许创建记录)
我还想防止在记录创建步骤中输入重复数据。
示例
记录一个创作 -
Nic1mac = 1234
Nic2mac = 1234
我希望出现一个不允许我创建记录的错误,因为重复的数据被输入到两个不同的字段中。如果需要更清晰或更多信息或代码,请告诉我,我会尽力提供。
答案 0 :(得分:0)
您可以将所有Mac存储在不同的Mac类(只有一个)中,因此您必须验证一列的唯一性:
class Asset < ActiveRecord::Base
has_one :Nic1mac, class_name: 'Mac'
has_one :Nic2mac, class_name: 'Mac'
has_one :Nic3mac, class_name: 'Mac'
end
Class Mac < ActiveRecord::Base
belongs_to :asset
validates_uniqueness_of :mac_addr
end