Может ли солнечное пятно искать внутри массива? - PullRequest
5 голосов
/ 15 марта 2012

У меня есть следующая модель с полем массива:

Class Invitation
 include Mongoid::Document
 include Mongoid::Timestamps::Created
 include Sunspot::Mongo

 field :recipients, :type => Array
 attr_accessible :recipients

 searchable do
  text :recipients do
  recipients.map { |recipient| recipient }
  end
 end

end

У меня в контроллере:

def recipients

 @invitation = Invitation.find(params[:id])
 @search = Invitation.search do |s|
 s.fulltext params[:search]
 s.with(:recipients, @invitation.recipients)
 end

@recipients = @search.results
  respond_to do |format|
   format.html
  end

end

Это когда я переиндексирую, но не показываю ошибку, но:

Это не работает нормально для меня .Я получаю следующую ошибку в журнале:

Sunspot :: UnrecognizedFieldError (нет поля, настроенного для приглашения с именем «получатели»):

Я тоже пробовал:

string :recipients do
  recipients.map { |recipient| recipient }
end

Но я получаю следующую ошибку при переиндексации:

recipients is not a multiple-value field, so it cannot index values []

Могу ли я решить эту проблему?

1 Ответ

7 голосов
/ 07 апреля 2012

Модель Invitation имеет ассоциацию has_many с recipients. Это означает, что invitation может иметь несколько recipients.

Итак, попробуйте это:

string :recipients, :multiple => true do
  recipients.map { |recipient| recipient }
end
...