如何在条件中使用validates_uniqueness_of

时间:2014-05-02 08:31:07

标签: ruby validates-uniqueness-of

我正在使用带有ruby的datamapper。我想在将其插入表格之前验证我的新数据集。我的验证标准是......

1)仅在字段名称时插入'不存在。

2)如果记录名称相同,则不插入'已经有'submit_date' (不是空的。)

我关注dm-validations,我认为validates_uniqueness_of应该有所帮助。 我尝试按照代码

validates_uniqueness_of :submit_date, :scope => :name

但结果并不如我所料。相同的名字 '仍然添加到表中,而其现有的名称'已有' submit_date'值。

id|name|submit_date|
1 |LotA|Null
2 |LotB|2014-05-02
3 |LotB|Null <--- This record should not be added because LotB is existing and already submit
4 |LotC|Null

任何建议,请?

1 个答案:

答案 0 :(得分:0)

如果您的目的是首先验证名称的唯一性,那么您可以这样做

validates :name, presence: true, uniqueness:{case_sensitive:false}
validate :exists_with_submit_date

def exists_with_submit_date
    existing_record = self.find_by_name(name) 
    if existing_record && existing_record.submit_date
      errors.add(:name, "all ready exists with submit_date #{existing_record.submit_date}")
    end
end