我正在为Sonar编写一个插件(现在称为SonarQube),对于此插件中的一个小部件,我需要返回属性表中所有属性的列表,其中包含 的键< / i> “sonar.score.TitleCup:”。我是一名Java程序员,但是这个小部件是用Ruby Scriptlets编写的,涉及Lambda表达式和Closures。我今天花了一半时间试图理解它们,但我仍然无法使这个小部件工作。 我从以下代码开始:
properties = Property.find(:all, :conditions => {:prop_key => "sonar.score.TitleCup:BestCoverage"})
这很有效,并且返回了我正在寻找的属性,但我需要能够找到prop_key包含“sonar.score.TitleCup:
”的所有属性。
我尝试了以下内容,但它打破了小部件(小部件显示了错误消息)。
properties = Property.find(:all, :conditions => {:prop_key.include? "sonar.score.TitleCup:" => true})
任何熟悉Ruby和Lambda表达的人都可以帮助我吗?我应该使用Lambda表达式吗?
答案 0 :(得分:2)
据我所知,Sonar是一个Rails应用程序,而Property
是一个ActiveRecord::Base
子类,以下应该做你想做的事情:
properties = Property.find(:all, :conditions => ['prop_key LIKE ?','sonar.score.TitleCup:%'])
基本上,不是使用简单的{:key => value}
,而是直接提供SQL WHERE条件(使用占位符)。
您可以阅读有关Rails查询界面的信息,特别是Active Record Query Interface
条件