1
对于上一个问题,我正在寻找一种方式来动态调整模型的 。在运行时修改导轨模型
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类中的日历字段为“config”。
适用于现有活动,但不适用于新纪录。这是因为,在调用after_initialize时,关联不存在。
除了在事件本身上放置配置值之外,我无法找到一种方法来做到这一点。
任何建议?
韩国社交协会!
似乎没有工作。试过了,它将我重定向到创建视图。我错过了什么吗? – 2011-04-18 13:19:37
取决于您的控制器如何接线,这可能是由于验证失败。我会检查正在“即时”运行的验证代码,并确保只有在确实存在错误时才将其添加到错误集合中。还要确保没有代码设置“valid”属性,因为Rails根据“errors”集合的值自动设置它。 – MDaubs 2011-04-18 16:29:10
我的测试是用一个简单的“validates_presence_of” – 2011-04-18 16:54:16