Как мне заставить Index-tank выполнять условную индексацию? - PullRequest
0 голосов
/ 18 мая 2011

После долгого разговора с хорошими людьми из IndexTank я не был уверен, как решить мою проблему, и мне было интересно, может ли кто-нибудь мне помочь.

У меня есть модель статьи, которая принадлежитпользовательская модель.Эта модель статьи также имеет логический атрибут anonymous, который, если задано значение true, дает пользователю возможность публиковать статью без отображения его имени.

Article
belongs_to :user
attr_accesible :anonymous, :user_id

User
has_many :articles

Моя проблема в том, что если статья публикуется как анонимная.Я не хочу, чтобы танкер выполнял поиск в поле имени автора, но я хочу, чтобы он просматривал все остальные поля.Я попытался сделать это с помощью оператора if else, где я обычно помещал бы блок "tankit", но это не работает.

Есть ли способ, которым я мог бы поместить блок tankit в метод модели и использоватьобратный вызов валидации?

def anon_index
    if self.anonymous
      tankit 'my_index' do
        indexes VARIABLES ETC BUT NOT the user_ attributes
      end
    else # if anonymous is false
      tankit 'my_index' do
        indexes :title
        indexes :body
        indexes :user_penname
        indexes :user_firstname
        indexes :user_lastname
      end
    end
  end

Я думал об этом или помещал оператор if else, где идет объявление блока "tankit", но ни один из них, похоже, не поступает, если я не делаю что-то не так.

1 Ответ

2 голосов
/ 18 мая 2011

как это выглядит?:

class Article < ActiveRecord::Base

 tankit 'my_index' do
       indexes :title
       indexes :body
       indexes :custom_penname
       indexes :custom_firstname
       indexes :custom_lastname
 end

 def custom_penname
   if self.anonymous
     'anonymous'
   else
     self.user_penname
   end
 end

 def custom_firstname
   #same for first name
 end
 def custom_lastname
   #same for last name
 end
end

Тот же подход, другой сценарий:

https://github.com/adrnai/rails-3-tanker-demo/blob/master/app/models/comment.rb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...