【发布时间】:2011-04-17 22:11:38
【问题描述】:
在上一个问题上,我正在寻找一种方法 动态验证我的模型。
Advice on "Dynamic" Model validation
我得到的解决方案是:
def after_initialize
singleton = class << self; self; end
validations = eval(calendar.cofig)
validations.each do |val|
singleton.class_eval(val)
end
end
在我的实际应用中,我有 2 个模型
class Calendar < ActiveRecord::Base
has_many :events
end
class Event < ActiveRecord::Base
belongs_to :calendar
def after_initialize
singleton = class << self; self; end
validations = eval(calendar.cofig)
validations.each do |val|
singleton.class_eval(val)
end
end
end
如您所见,应添加到 Event 类的验证代码位于 Calendar 字段“config”中。
适用于现有活动,但不适用于新记录。这是因为,在调用 after_initialize 时,关联还不存在。
除了将配置值放在事件本身之外,我找不到其他方法。
有什么建议吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails-3 validation metaprogramming