如果我理解正确,会话变量将改变验证模型的方式。我相信正确的解决方案如下:
class Blog < ActiveRecord::Base
attr_accessor :validate_title
validate_presence_of :title, :if => :validate_title
end
class BlogsController < ApplicationController
def new
@blog = Blog.new
@blog.validate_title = session[:validate_title]
end
end
该代码还没有testet,但这就是主意。 if参数可以是方法的名称,你可以在那里做任何你想做的事情。如果你愿意,你可以有各种验证模式。例如:
class Blog < ActiveRecord::Base
attr_accessor :validation_mode
validate_presence_of :title, :if => :validate_title
def validate_title
validation_mode == "full" or validation_mode == "only_title"
end
end
class BlogsController < ApplicationController
def new
@blog = Blog.new
@blog.validate_mode = session[:validate_mode]
end
end
欲了解更多信息,请阅读the guide on validation。
嗨siulamvictor, 你能详细说明你的问题,你想做什么。因为通常你不需要访问模型的会话,即使你这样做也可能有另一种方式做它 欢呼声, sameera – sameera207 2010-06-10 06:27:47
嗨sameera。这实际上是一面旗帜。我有一个需要处理很多视图的模型,但不同的视图在这个模型中需要不同的验证规则。我想为这种控件使用一个变量。 – 2010-06-10 07:06:48