0

ユーザー ABC が「検索」リンクをクリックしたときに、ABC と同じ都市に住んでいるメンバーのみを ABC に表示させたいと考えています。現在、Users コントローラーの index アクションに次のコードがあり、Web サイトに登録されているすべてのメンバーが表示されます。ページネーションにもwill_paginategemを使用しています。

  def index
    @users = User.paginate :page => params[:page], :per_page => 10
  end

@usersビューでは、配列を反復処理してすべてのユーザーを表示しています。

ただし、ABC には彼/彼女の都市のメンバーのみを表示したいと考えています。ABC が自分の都市のメンバーのみを表示できるようになったら、フィルターを実装して結果をさらに絞り込みます。しかし、それは後のステップです。また、ABC は、アドレス バーにユーザー名を入力するだけで、他の都市のユーザーのプロファイルを表示できないようにする必要があります。どうすればいいですか?

4

1 に答える 1

5

ActiveRecord スコープを使用できます ( Ruby on Rails Guides / ActiveRecord Query Interface)

次に、 User モデルには次のようなものがあります。

scope :living_in_the_same_city_with, lambda { |user| /* your where condition where(:city_id => user.city_id) */ }

そしてコントローラーの内部:

@users = User.living_in_the_same_city_with(current_user).paginate :page => params[:page], :per_page => 10
于 2013-03-16T06:57:03.027 に答える