これは 2 部構成です。以下のアプローチのいずれか、または他の提案に満足しています。
モデルに検索語を渡し、モデル内の任意のフィールド、またはモデルが実行可能と見なす任意のフィールドでその検索語を検索することで、モデルを使用してレコード/オブジェクトを取得できるようにしたいと考えています。したがって、例として:
class Product < ActiveRecord::Base
...
def search_all_fields(search_term)
return search_term.length == 0 ? nil : Product.where("serial_number like :find_me", { :find_me => search_term })
end
end
これは製品モデルからのものです。Company モデルの同じ関数は次のようになります。
class Company < ActiveRecord::Base
...
def search_all_fields(search_term)
return search_term.length == 0 ? nil : Company.where("customer_number like :find_me or name like :find_me", { :find_me => search_term })
end
end
「find_by_Looking_everywhere」など、これを行うための「レールシーな」方法が欲しいのですが、そのようなものを見つけることができませんでした。単一のフィールドで複数の値を検索するための多くの提案を見つけましたが、複数のフィールドで単一の値を検索することはできません。これが「パート 1」です。これを行うための「レールっぽい」方法はありますか?
「パート 2」 ... 上記のコードを使用すると、次の例外が発生するのはなぜですか?
undefined method `search_all_fields` for #<Class:0xa38f2ac>
@products = Product.search_all_fields("xy3445")
または@companies = Company.search_all_fields("high")
??を使用してメソッドを呼び出しています。トレースは、ジェネリック クラスだけによって例外が発生していることを示しています。それは言わない#<Product...>
か#<Company...>
私は少し迷っています...すべての助けに感謝します。
ありがとう、ギャング。