1

ここで Rails を学習している iOS 開発者。has_manyリレーションのプロパティに基づいてレコードのアクティブ レコードをクエリしようとしています。これが単純な場合は申し訳ありませんが、私はそれを理解できません。scope.where、について読み、使用しようとしてきまし.joinsたが、オンラインには相反する投稿やブログがたくさんあり、どれを使用して何が正しいのかわかりません...

問題に:

2 つの ActiveRecord モデルがあります。

class User < ActiveRecord::Base
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :user
end

アイテムには プロパティ があります。文字列形式の検索パラメータに似た を持つアイテムを持つtitleすべての を見つけようとしています。Usertitle

アイテムの検索を使用してそのようなことを行うことができたので、次.mapのようにします。

users_owning_item_in_search_parameter = Item.where{ (title =~ my{@search_param + "%"}) }.map! { |i| i.user }

(その構文はsqueel gem から来ています。)

しかし、このインスタンス タイプを必要とするさらにフィルタリングを行う必要があるため、このコマンドは が必要なArrayときに を返します。ActiveRecord::Relation

どんな助けでも大歓迎です。

4

1 に答える 1

5

私はあなたがこのようなものを探していると思います:

User.joins(:items).where('items.title LIKE ?', "#{@search_param}%")

squeel を利用したい場合は、少し変更する必要があります。

于 2013-10-17T22:38:07.063 に答える