1

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

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 表达式吗?

4

1 回答 1

2

据我所见,Sonar 是一个 Rails 应用程序,并且Property是一个ActiveRecord::Base子类,以下应该可以满足您的要求:

properties = Property.find(:all, :conditions => ['prop_key LIKE ?','sonar.score.TitleCup:%'])

基本上,您不使用 simple {:key => value},而是直接提供 SQL WHERE 条件(使用占位符)。

您可以阅读 Rails 查询接口,特别是Active Record 查询接口的条件

于 2013-07-08T22:19:48.123 回答