我的Schedule
模型有start_date
date
字段和type
。
当Schedules
为非start_date
时,允许多个type
与nil
相同。
validates :start_date, :presence => true, :uniqueness => { :if => Proc.new{ |schedule| schedule.type == nil } }
server » Schedule.where(start_date: s.start_date).count
他们.type
中的2个是非零的,1是nil
。然而,我收到了Schedule
的错误,说
s.errors
=> {
:start_date => [
[0] "has already been taken"
]
但它似乎只能自己采取。为什么会这样?
答案 0 :(得分:0)
我可能错了,但我认为你不能使用":if"作为参数:unique - 它仅适用于整行。您可以尝试使用单独的验证器:
validates :start_date, :presence => true
validates_uniqueness_of :start_date, :if => Proc.new{ |schedule| schedule.type.nil? }