Rails / Redis / Soulmate - 如何按用户角色限制搜索结果?

时间:2014-12-30 19:27:23

标签: ruby-on-rails ruby redis

我已将我的应用设置为使用Soulmate和soulmate.js进行自动完成。它搜索两个模型 - 用户和书籍。但是,我有多个用户角色 - 一些是作者,一些是读者。我只希望作者出现在结果中。

根据用户的角色,有没有办法限制新用户注册时添加到Redis的内容?

user.rb中的

(使用" if role =" author")无法正常工作

def load_into_soulmate
    loader = Soulmate::Loader.new("authors")
    loader.add("term" => fullname, "id" => self.id, "data" => {
      "link" => Rails.application.routes.url_helpers.user_path(self)
      }) if self.role = "author"
  end

  def remove_from_soulmate
    loader = Soulmate::Loader.new("authors")
      loader.remove("id" => self.id)
  end

在pages.js

$('#search').soulmate({
    url: '/search/search',
    types: ['books','authors'],
    renderCallback : render,
    selectCallback : select,
    minQueryLength : 2,
    maxResults     : 5
  })

或者,我可以将角色添加到Redis存储的位置,然后告诉js仅为角色="作者"?

的用户提供服务

谢谢!

1 个答案:

答案 0 :(得分:1)

我在user.rb中的after_save中使用条件解决了它:

after_save :load_into_soulmate, :if => :is_author

def is_author
    if self.role == "author"
      true
    else
      false
    end
  end