【问题标题】:RESTful query of nested models in Rails 4Rails 4 中嵌套模型的 RESTful 查询
【发布时间】:2013-07-22 05:31:29
【问题描述】:

我有两个型号 UsersTags。一个用户has_and_belongs_to_many tags,一个标签has_and_belongs_to_many users

假设我想搜索所有已启用的用户,这些用户带有 environment 标记。

目前我像这样点击标签控制器的显示动作:

http://localhost:3000/tags/environment?search=enabled

我正在构建这样的搜索:

tag_controller.rb

 def show
    @users = Tag.search(params)
    @tag = params[:id]
    respond_with @users
  end

tag.rb 模型

def self.search(term)
  if term
   where(slug:term[:id]).first.users
  end
end

我很快意识到这根本没有意义。假设我想搜索用户的关联属性,该属性在 params[:search] 中传递,说我想通过@user.enabled 过滤它们?或@user.zipcode。

如何以 RESTful 方式使用 Rails 跨两个模型构建复杂查询?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord ruby-on-rails-4


    【解决方案1】:
    User.where(enabled: true).joins(:tags).where(term: 'environment')
    

    请注意不要在Tag 上使用enabled,在User 上使用term,否则您将不得不在它们前面加上表名。

    编辑: 带前缀

    User.where('users.enabled = ?', true).joins(:tags).where('tags.term = ?', 'environment')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多