如果我理解正確,會話變量將改變驗證模型的方式。我相信正確的解決方案如下:
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