У меня есть две модели:
class Venue < ActiveRecord::Base
has_many :loyalty_cards
end
class LoyaltyCard < ActiveRecord::Base
belongs_to :venue
searchkick word_start: [:venue_name, :venue_name_from_relation]
def search_data
attributes.merge(
venue_name_from_relation: self.venue(&:name)
)
end
end
LoyaltyCard имеет два поля:
venue_id: int #used for relation with venue if such venue exists
venue_name: string #or you can add venue name manually when creating loyalty card
Я хочу выполнить поиск в обоих полях и попробовал следующую настройку, предложенную в Searchkick isses на GitHub (т.е. https://github.com/ankane/searchkick/issues/112): searchkick word_start: [:venue_name, :venue_name_from_relation]
def search_data
attributes.merge(
venue_name_from_relation: self.venue(&:name)
)
end
Он успешно ищет место проведения_название, но не в связанном месте.
Я также пытался сделать следующее (и несколько других вариантов):
def search_data
{
venue_name_from_relation: venue.map(&:name)
}
end
однако он не выполняет переиндексацию с ошибкой класса nil.
Любые идеи?
спасибо, Роман