1

私は Sonar (現在は SonarQube と呼ばれています) 用のプラグインを作成しています。このプラグインのウィジェットの 1 つで、「sonar.score.TitleCup:」を含むキーを持つプロパティ テーブルからすべてのプロパティのリストを返す必要があります。私は Java プログラマーですが、ウィジェットは Ruby スクリプトレットで作成されており、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 式に詳しい人はいますか? ラムダ式を使用する必要がありますか?

4

1 に答える 1

2

私が見る限り、Sonar は Rails アプリでありPropertyActiveRecord::Baseサブクラスです。

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

基本的に、単純な を使用する代わりに、{:key => value}(プレースホルダーを使用して) SQL WHERE 条件を直接指定します。

Rails クエリ インターフェースについて、特にActive Record Query Interfaceで条件について読むことができます。

于 2013-07-08T22:19:48.123 に答える