2

Rails 3.1 へのアップグレードに備えて、MetaWhere から Squeel に移行したいアプリケーションがあります。

これはほとんど単純なプロセスですが、ちょっとした問題を引き起こすケースが 1 つあります。問題は、変数として指定されたフィールドと値の両方があることです。私の MetaWhere クエリでは、フィールド名からシンボルを作成し、それをクエリで使用することができましたが、Squeel はシンボルを使用せず、代わりに instance_eval に依存しており、それを使用して同様のクエリを作成する方法がわかりません...

元のクエリは次のようになります。

Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')

Squeel で同様のクエリを作成するにはどうすればよいですか?

従来のシンボル機能を使用することを指定できることはわかっていますが、新しい構文に完全に変換したいと考えています。

4

1 に答える 1

1

これは機能します:

Article.where{article.send(field_name) =~ '%' + field_value + '%'}

小文字の「記事」はテーブル名です。

于 2011-11-08T02:56:32.377 に答える