我尝试执行validates_length_of,但在运行时指定范围/最小值/最大值。
例如,我们有一个父模型:
class Parent < ActiveRecord::Base
has_many :children
# with attributes min_length, max_length
end
还有一个孩子模特:
class Child < ActiveRecord::Base
belongs_to :parent
# with an attribute reference
end
所以我想在Child课程中做的是:
validate :reference_length
def reference_length
options = { :within => parent.min_length..parent.max_length }
self.class.validates_length_of :reference, options
end
但它没有用,有没有办法在不做errors.add(:reference, message) if...
的情况下做到这一点?
答案 0 :(得分:1)
使用lambda函数可能有效:
validates_length_of :reference, :minimum => lambda{parent.min_length},
:maximum => lambda{parent.max_length}