Sonar小部件中的Ruby Lambda表达式,用于查找其键包含字符串的属性

Sonar小部件中的Ruby Lambda表达式,用于查找其键包含字符串的属性,ruby,lambda,sonarqube,Ruby,Lambda,Sonarqube,我正在为Sonar(现在称为SonarQube)编写一个插件,对于这个插件中的一个小部件,我需要返回属性表中所有属性的列表,其中一个键包含“Sonar.score.TitleCup:”。我是一名Java程序员,但是这个小部件是用Ruby Scriptlet编写的,并且涉及Lambda表达式和闭包。今天我花了一半的时间试图理解它们,但在让这个小部件正常工作方面仍然有困难。 我从以下代码开始: properties = Property.find(:all, :conditions => {:

我正在为Sonar(现在称为SonarQube)编写一个插件,对于这个插件中的一个小部件,我需要返回属性表中所有属性的列表,其中一个键包含“Sonar.score.TitleCup:”。我是一名Java程序员,但是这个小部件是用Ruby Scriptlet编写的,并且涉及Lambda表达式和闭包。今天我花了一半的时间试图理解它们,但在让这个小部件正常工作方面仍然有困难。 我从以下代码开始:

properties = Property.find(:all, :conditions => {:prop_key => "sonar.score.TitleCup:BestCoverage"})
这起作用了,并返回了我要查找的属性,但我需要能够找到prop_键包含“
sonar.score.TitleCup:
”的所有属性
我尝试了以下操作,但它破坏了小部件(小部件显示错误消息)


有熟悉Ruby和Lambda表达式的人能帮我吗?我甚至应该使用Lambda表达式吗?

据我所知,Sonar是Rails应用程序,
属性
ActiveRecord::Base
子类,下面应该做你想做的事情:

properties = Property.find(:all, :conditions => ['prop_key LIKE ?','sonar.score.TitleCup:%'])
基本上,不是使用简单的
{:key=>value}
,而是直接提供一个SQLWHERE条件(使用占位符)


您可以阅读关于Rails查询接口的信息,特别是关于条件的信息,这些信息位于

什么是
属性的完整类型
?那是由SonarQube提供的吗?是的,它是由Sonar提供的,我知道这一点。不幸的是,我对Ruby不是很熟悉。“完整类型”是什么意思?我不熟悉Sonar开发,但在我看来,如果要过滤属性,需要为
find()
方法提供不同类型的条件。条件
:prop_key=>“…”
表示相等。可能是find方法支持其他类型的条件,但这取决于它的实现方式。当我使用find方法时,我使用了
properties=Property.all(:conditions=>['prop_key LIKE?','sonar.score.TitleCup:%')
它破坏了小部件。然而,我使用了
properties=Property.find(:all,:conditions=>['prop_key LIKE?','sonar.score.TitleCup:%'))
使用了答案的核心,它成功了!非常感谢。它一定是Rails的旧版本,
。所有的
快捷方式并不总是存在。我修正了答案。
properties = Property.find(:all, :conditions => ['prop_key LIKE ?','sonar.score.TitleCup:%'])