Вземете полета и атрибути, дефинирани от thinking_sphinx

Как мога да получа списък с дефинирани атрибути и полета на thinking_sphinx на модел? По-специално искам да проверя дали входният атрибут е дефиниран за сфинкса

примерна дефиниция:

has store.name, :as => :store_name

искам нещо като Model.sphinx_attributes.include? :store_name


person Vadim Chumel    schedule 04.09.2011    source източник


Отговори (1)


Следното трябва да свърши работа:

Model.sphinx_indexes.collect { |index|
  index.attributes.collect &:unique_name
}.flatten.include?(:store_name)

Полетата са почти еднакви:

Model.sphinx_indexes.collect { |index|
  index.fields.collect &:unique_name
}

Преди да изпълните което и да е, добра практика е първо да изпълните това, за да сте сигурни, че индексите са заредени:

Model.define_indexes

Ако вече са заредени, този метод няма да направи нищо.

person pat    schedule 04.09.2011
comment
Много благодаря, това сработи. Моля, добавете към отговора, че първо трябва да се използва define_indexes (както забелязахте тук: проблем с github 65 ) - person Vadim Chumel; 04.09.2011
comment
Сетих се за това само преди 20 минути - радвам се да видя, че все пак си го разбрал :) - person pat; 05.09.2011