小编phr*_*kre的帖子

使用Ruby on Rails清理用户输入

我正在编写一个非常简单的CRUD应用程序,该应用程序将用户故事存储到数据库中,以便其他编码人员可以为我们正在处理的项目组织它们.但是,在将用户输入保存到数据库之前,我遇到了清理用户输入的问题.我无法从Story模型中调用sanitize()函数来去除所有的html /脚本.它要求我做以下事情:

def sanitize_inputs
  self.name =  ActionController::Base.helpers.sanitize(self.name) unless self.name.nil?
  self.story = ActionController::Base.helpers.sanitize(self.story) unless self.story.nil?
end
Run Code Online (Sandbox Code Playgroud)

我想验证用户输入是否已经过消毒,我不确定两件事:1)用户输入验证应该何时进行?在保存数据之前是非常明显的,但是,我认为,在验证用户输入没有脚本/ html标记之前,我应该在验证之前处理Controller中的这些内容,还是其他一些非显而易见的区域?2)为此模型编写单元测试,除了将"这是恶意代码示例"与清理(示例)输出进行比较之外,如何验证脚本/ html是否被删除?

提前致谢.

ruby-on-rails

4
推荐指数
1
解决办法
9280
查看次数

识别ApplicationController(RoR)中方法的调用者

我的ApplicationController中有一个方法,它是before_filter的一部分.如何识别哪个控制器正在调用该方法,我可以将参数传递给它吗?

大概是最糟糕的情况,我可以使用控制器名称和值创建一个新对象,然后使用NewObject.find(:first,:conditions => ['controller_name =?',controller_name]直接在before_filter方法中调用它,但是闻起来很糟糕.

所以我对创意持开放态度.提前致谢.

伪短代码:

class ApplicationController < ActionController::Base
    before_filter :someMethod
    ....
    def someMethod
        Do stuff
    end


class SomeController < ApplicationController
    # presumably the before_filter runs here
    @someValueIWantToPass = some.value
    ...
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

0
推荐指数
1
解决办法
1684
查看次数

标签 统计

ruby-on-rails ×2

ruby ×1