Rails:如何在搜索中显示具有特定条件的用户?

时间:2013-03-16 06:42:58

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

当用户ABC点击“搜索”链接时,我希望ABC只能看到与ABC居住在同一城市的成员。现在我在Users控制器的索引操作中有以下代码,它显示在网站上注册的所有成员。我也使用will_paginate gem进行分页。

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

在视图中,我正在遍历@users数组以显示所有用户。

但是,我希望ABC只能看到他/她所在城市的成员。一旦ABC只能看到他/她所在城市的成员,我将实施过滤器以进一步缩小结果范围。但那是后来的一步。此外,ABC不能通过在地址栏中输入用户名来查看来自其他城市的用户的个人资料。我该怎么做呢?

1 个答案:

答案 0 :(得分:5)

您可以使用ActiveRecord范围(Ruby on Rails Guides / ActiveRecord Query Interface)

然后在您的用户模型中,您将拥有以下内容:

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