I have a fabrics model that belongs to multiple other tables.
class Fabric < ActiveRecord::Base
validates :name, presence: true
belongs_to :design
belongs_to :composition
belongs_to :collection
belongs_to :style
belongs_to :origin
belongs_to :texture
belongs_to :supplier
has_and_belongs_to_many :colours
searchable do
text :name, :boost => 5
text :description
text :composition do
composition.name
end
text :collection do
collection.name
end
text :style do
style.name
end
text :origin do
origin.name
end
text :texture do
texture.name
end
text :supplier do
supplier.name
end
end
end
I have setup all of the reverse associations (Has_many) etc. However I do not seem to be able to get the fulltext search to query the name fields of all of these associated tables.
Any help would be greatly appreciated.
@search = Fabric.search do
fulltext params[:search]
end
@fabrics = @search.results
Ross
You need to pass block inside your fulltext to specify which fields you want to search on.
Here is how you index in your searchable block. Solr thinks in terms of document. It doesn't care it's an association or not.
Then reindex.
Check this out for more detail https://github.com/sunspot/sunspot#full-text
https://github.com/sunspot/sunspot#setting-up-objects
In case some association can be nil, do not forget to test for that otherwise you will get error while rebuilding index
It looks like you haven't reindexed data after model update.
Run this command to reindex: