我有一个日期时间的列converted_at.
我打算WHERE converted_at is not null经常打电话.因此,我正在考虑使用布尔字段converted.在检查字段是否为not nullvs时,它们之间是否存在显着的性能差异false?
谢谢.
我有一个虚拟属性,它从表单字段中获取时间范围并将其拆分:
def time_range=(time_range)
unless time_range.empty?
t = time_range.split(/to|\-/)
self.start_entry = t[0]
self.finish_entry = t[1]
if Chronic.parse(self.start_entry).nil? || Chronic.parse(self.finish_entry).nil?
errors.add(:time_range, 'Invalid time range entered')
end
end
end
Run Code Online (Sandbox Code Playgroud)
start_entry并且finish_entry也是虚拟属性,因为我有其他方法来设置它们.无论两者是如何设置的,我都有以下钩子来设置start并finish在我的数据库中:
before_save :set_start_and_finish
尽管我添加了一个错误,但错误的对象仍然设法保存:
> t = Tour.new
> t.time_range = "rubbish"
> t.errors
#=> {:time_range=>["Invalid time range entered"]}
> t.valid?
#=> true
Run Code Online (Sandbox Code Playgroud)
如何使实例无效以防止以后保存?