Релсите със Sunspot добавят атрибути на детски модел

И така, занимавам се с това от часове и мисля, че вече опитах всичко, което е публикувано по този въпрос. Това е първият ми въпрос.

И така, опитвам се да търся модели (Местоположения) :branch_name, :branch_address1 и т.н. с техния дъщерен модел (Служители) :first_name, използван в този модел като негов собствен атрибут. Така че желаният ефект би бил Locations (като резултати) да се върнат, ако име на служител на местоположения е в заявката за търсене. Опитвам се да постигна това с код като този:

class Location < ActiveRecord::Base
  belongs_to :partner
  has_many :employees, dependent: :destroy

  validates_presence_of :branch_name, :branch_address1, :branch_country, :branch_zip_code
  accepts_nested_attributes_for :employees, allow_destroy: true, :reject_if > proc { |attributes| attributes['first_name'].blank? }

  searchable do
    text :branch_name, :branch_address1, :branch_city, :branch_zip_code
    text :employee_attributes do
      :first_name
      if :employee_attributes
      end
    end
  end

end

Бих искал да използвам и името на родителския модел (Партньори), но и това не можах да накарам да работи.

Мога ли да направя нова колона в таблицата с местоположения, за да уловя всяко ново име на служител, или мога да търся в това моделиране на деца?


person Colton Hagan    schedule 15.05.2015    source източник


Отговори (1)


Използвал съм solr с релси, срещал съм подобни проблеми. Както попитахте за нова колона, бях добавил ново поле към solr

псевдо код

searchable do
 text :first_name, :stored => true
 string  :partner_name, :stored => true do
   partner.name
 end
end

Моля, имайте предвид, че съхранените полета увеличават разходите.

В моя случай трябваше да задействам множество заявки, които отнеха 47 секунди, съхраняването на стойност ми помогна да избегна множество заявки, една заявка отне 5 секунди.

Трябва да индексирате отново, за да получите резултати.

person Sandesh Soni    schedule 15.05.2015
comment
Все още получавам този код, когато преиндексирам. Има ли нещо друго, което трябва да променя в молбата си? NoMethodError: undefined method 'first_name' for #<Location:0x007ff308e03528> - person Colton Hagan; 15.05.2015
comment
Продължих и използвах идеите в този подход, за да опитам неща като string :employees_first_name, :stored => true do employees.first_name end с подобни проблеми: NoMethodError: undefined method 'first_name' for #<Employee - person Colton Hagan; 15.05.2015