Sql 如何使用JQuery Tokeninput在Rails中编写自动完成查询?

Sql 如何使用JQuery Tokeninput在Rails中编写自动完成查询?,sql,ruby-on-rails-3.1,autocomplete,jquery-tokeninput,Sql,Ruby On Rails 3.1,Autocomplete,Jquery Tokeninput,我有一个带有“自动完成”字段的表单,该字段使用。基本查询(仅查找名称或用户名与键入的文本匹配的用户)是: #users_controller.rb def index @users = User.where("LOWER(name) like ? OR LOWER(username) like ?", "%#{params[:q].downcase}%", "%#{params[:q].downcase}%").order('name ASC').limit(10) if params[:q

我有一个带有“自动完成”字段的表单,该字段使用。基本查询(仅查找名称或用户名与键入的文本匹配的用户)是:

#users_controller.rb
def index
  @users = User.where("LOWER(name) like ? OR LOWER(username) like ?", "%#{params[:q].downcase}%", "%#{params[:q].downcase}%").order('name ASC').limit(10) if params[:q]

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @users, :only => [:id, :name, :username] }

end
这很有效

我的应用程序也有一个“追随者模型”,我想限制哪些用户出现在自动完成字段中,以便只返回“互惠追随者”。“互惠跟随者”是我跟随的人,他跟随我回来[(A跟随B)和(B跟随A)]

我在用户模型中有一个方法,可以为用户返回互惠的追随者:

#user.rb
# Users relation to Relationships
has_many :relationships, :foreign_key => "follower_id", :dependent => :destroy
has_many :followed_users, :through => :relationships, :source => :followed
has_many :reverse_relationships, :foreign_key => "followed_id",
                                 :class_name  => "Relationship",
                                 :dependent => :destroy
has_many :followers, :through => :reverse_relationships, :source => :follower

def reciprocal_followers
  self.followers & self.followed_users
end
我可以为输入文本的人获得对等的关注者:

@reciprocal_followers = current_user.reciprocal_followers
但是我如何根据输入的文本来缩减列表呢?如何将现有的autocomplete(@users=User.where…)查询与@interactive\u followers集成

英文:“我希望autocomplete显示最多10个互惠用户的列表,这些用户的名称或用户名与在autocomplete字段中键入的用户相同”


如何修改定义“@users”的查询以根据“@recipient followers”进行限制?

以下是我最终得出的结论:

@users = current_user.reciprocal_followers.select {|u| u.name.downcase =~ /#{params[:q].downcase}/ || u.username.downcase =~ /#{params[:q].downcase}/}.sort_by { |u| [u.name, u.username] }.first(10) if params[:q]
一位朋友还建议我将其从users_controller.rb移到relationships_controller.rb,在这里我有“follow”和“unfollow”操作,因为我实际上是在寻找碰巧是用户的关系列表(而不仅仅是寻找返回用户)。如果我把它留在users_controller.rb中,我可能应该将它移出“index”操作