ruby-on-rails – Rails ActiveRecord:find中的多个条件
发布时间:2020-12-16 22:42:07 所属栏目:百科 来源:网络整理
导读:这可能更像是 Ruby语法的东西,而不是别的.我有困难得到两个限制条件的SomeObject.find去. 分开,条件似乎有效: if search != '' find(:all,:conditions = ['name LIKE ?',"%#{search}%"])else find(:all,:conditions = ['active',1]).shuffleend 我要做的第
这可能更像是
Ruby语法的东西,而不是别的.我有困难得到两个限制条件的SomeObject.find去.
分开,条件似乎有效: if search != '' find(:all,:conditions => ['name LIKE ?',"%#{search}%"]) else find(:all,:conditions => ['active',1]).shuffle end 我要做的第一种情况是这样的: find(:all,"%#{search}%"],['active',1]) 但是这行抛出语法错误,意外的’)’,期待着tASSOC. 解决方法
Rails 2
find(:all,:conditions => [‘name LIKE?’,“%#{search}%”],[‘active’,1])不是传递散列到方法的正确语法.如果它是方法的最后一个参数,则可以将花括号从散列中放出,但在这种情况下,您将作为最后一个参数传递数组. 使用以下代替: find(:all,:conditions => ["name LIKE ? AND active = ?","%#{search}%",1]) 要么 params = {:search => "%#{search}%",:active => 1} find(:all,:conditions => ["name LIKE :search AND active = :active",params]) 轨3和4 您可能希望为最近的Rails版本做更多类似的操作: scope :active,-> { where(active: true) } scope :name_like,->(search) { where("name LIKE ?","%#{search}%") } 然后你会这样称呼: YourModel.active.name_like("Bunnies") 这允许您在整个应用程序中以不同的组合重用这些特定的查询.它还使代码检索数据超级容易阅读. 如果您不喜欢范围语法,还可以将它们定义为类方法: def self.active where(active: true) end def self.name_like(search) where("name LIKE ?","%#{search}%") end 您也可以即时链接示波器.这将允许您开始构建关系对象链,然后根据条件选择包括其他对象.当应用于原始问题以获得相同的结果时,它可以是什么样子: results = active results = results.name_like(search) if search.present? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql – 使用SSH(Putty)连接到Heroku Postgres
- Oracle data types and Microsoft SQL Server data types
- 新书连载:Oracle数据库的初始化与跟踪学习方法
- XML XSD 元素无序的问题
- flex 学习笔记 ExternalInterface(一)
- 模板 – Rails 3:控制器内的@template变量为零
- 如何在C#中获取使用流生成的文件的名称?
- \backend\models\core\Array2X
- ruby-on-rails-3 – RSpec给出了ActiveModel :: MassAssign
- FLASH轮播广告 在谷歌浏览器中不显示的解决办法(FLash轮播