【问题标题】:Undefined method #sanitize for ActiveRecord::BaseActiveRecord::Base 的未定义方法#sanitize
【发布时间】:2017-06-15 19:06:23
【问题描述】:

我刚刚升级到 Rails 5.1.1 并收到此错误。

NoMethodError (undefined method `sanitize' for ActiveRecord::Base:Class):

堆栈追溯到这段代码

like_search_term = ActiveRecord::Base::sanitize("%#{escaped_search_term}%")

在新的 Rails 升级中是否删除或更改了此方法?

【问题讨论】:

标签: ruby-on-rails ruby activerecord


【解决方案1】:

是的,确实,它似乎是removed

Sanitize 从来都不是框架公共 API 的一部分。由于我们不再需要它在框架中,我们删除了。清理原始 SQL 以用于执行语句的推荐方法是 http://api.rubyonrails.org/classes/ActiveRecord/Sanitization/ClassMethods.html 的公共 API

【讨论】:

  • 感谢您的信息。我最终选择了 'ActiveRecord::Base.connection.quote' 作为替代品。这修复了我的测试套件。有人知道更好的做法吗?
  • 但是当我尝试 query_string = ActiveRecord::Sanitization.sanitize_sql(params[:q]) 我得到 NoMethodError: undefined method `sanitize_sql' for ActiveRecord::Sanitization:Module
  • 也许我把问题理解错了,但是 ActiveRecord::Base.sanitize(params[:q]) 仍然可以正常工作,没有任何错误。
  • @Surya:在什么版本的rails中?
  • 那么也许 sanitize_sql 在以后的版本中也被引入了。谢谢
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多