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