Rails 3:mysql查询调整

时间:2011-07-07 06:29:29

标签: mysql ruby-on-rails-3

我在跟随Ryan Bates railscast#258后使用jquery_token_input,这是作者控制器中搜索输入的查询并生成json以呈现自动完成列表的代码。 目前,它选择名称与输入的参数类似的作者。

作者控制器

def index
  @authors = Author.where("name like ?", "%#{params[:q]}%")
  respond_to do |format|
    format.html
    format.json { render :json => @authors.map(&:attributes) }
  end
end

作者模型具有列:name和:user_id。我想首先选择user_id等于current_user.id的作者。然后从该数组中选择作者的名字就像输入的参数。

这有意义吗?非常感谢任何见解。

2 个答案:

答案 0 :(得分:1)

这最终成为我需要的行:(我有一个名为uid的辅助方法)

def index
 @authors = Author.where(:user_id => uid).where(["name like ?", "%#{params[:q]}%"])
  respond_to do |format|
    format.html
    format.json { render :json => @authors.map(&:attributes) }
  end
end

有没有办法通过删除第二个在哪里来改善这个?那甚至重要吗?

答案 1 :(得分:0)

  

我想首先选择作者在哪里   user_id等于   current_user.id。

听起来很奇怪。假设user_id是主键,则应该返回一个结果(或者没有);但绝不是作者名单。