Vic*_*Lam 5 model-view-controller session ruby-on-rails session-variables
我在我的应用程序中使用了一个全局变量来传递信息.但我遇到了问题,谢谢大家在这里建议我将这些数据存储在与数据库的会话中.
我试过,但我发现我无法访问Model中的会话变量.我用Google搜索并知道这是模型正常行为,RoR不会将会话变量传递给Model.
所以,我想在验证和控制器中使用该会话变量....
如何将会话变量的值传递给模型?要么
我的用例有什么其他方法吗?我需要一个存储值的变量,这是所有MVC所必需的,并且应该在不同的并发用户之间独立.
感谢大家.:)
如果我理解正确,会话变量会改变您验证模型的方式.我相信对此的正确解决方案如下:
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
Run Code Online (Sandbox Code Playgroud)
代码还没有被测试,但这就是想法.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
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读有关验证的指南.
| 归档时间: |
|
| 查看次数: |
11779 次 |
| 最近记录: |