2014-12-30 3 views
1

Я создал свое приложение, чтобы использовать Soulmate и soulmate.js для автозаполнения. Он выполняет поиск по двум моделям - «Пользователи и книги». Но у меня есть несколько ролей для пользователей - некоторые из них авторы, а некоторые - читатели. Я хочу, чтобы авторы показывали результаты.Rails/Redis/Soulmate - Как ограничить результаты поиска по роли пользователя?

Есть ли способ ограничить добавление к Redis, поскольку новые пользователи регистрируются на основе их роли?

в user.rb (с помощью «, если роль = "автор") не работает

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

I решить ее с условной в after_save в user.rb:

after_save :load_into_soulmate, :if => :is_author 

и

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

Просто немного внушения ... смена имени метод '' автора и вам просто нужно одну строку кода? в методе body 'role == 'author'', который вернет T или F ... –

Смежные вопросы