我正在ActiveRecord中编写自定义验证器,以便截止日期有意义:
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
Run Code Online (Sandbox Code Playgroud)
然而,这会为nil:NilClass生成"NoMethodError:undefined method`>'.我事件试图将日期变成字符串,如:
def deadline_is_possible?
if deadline.to_s > begins_at.to_s
errors.add(:deadline, 'must be possible')
end
end
Run Code Online (Sandbox Code Playgroud)
虽然它不会产生错误,但也不起作用.
我还宣布了其他验证者(例如
def begins_at_is_date?
if !begins_at.is_a?(Date)
errors.add(:begins_at, 'must be a date')
end
end
Run Code Online (Sandbox Code Playgroud)
工作还可以.
我正在使用这一行生成一系列随机浮点数:
random.random()*(maxval-minval) + minval
Run Code Online (Sandbox Code Playgroud)
我正在使用它为给定变量添加可变噪声,并且添加的噪声量取决于一系列因素.在某些情况下,噪音应该很高,以至于在实践中原始值会丢失,而且我有一个完全随机的值.
在这种情况下,代码工作使用有限值,但如果我使用"inf"它返回NaN.是否有解决方法允许包含无穷大的连续随机范围?我不想篡改os.random()因为它是机器特定的.