我有两个模型Users
和Tags
. 一个用户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 跨两个模型构建复杂查询?