On Mon, Dec 11, 2006 at 07:57:40AM +0100, Jackie wrote:> Hello,
>
> I''m a newbie to aaf and rails and I hope anyone can help me with
this.
> I have the following Models:
>
> class Project < ActiveRecord::Base
[..]> acts_as_ferret :fields => {:name => {:store => :yes},
> :description => {:store => :yes},
> :project_notes => {:store => :yes}}
>
> has_many :notes, :as => :notable
[..]> def project_notes
> @index = Array.new
> for note in self.notes
> @index << note.details
> end
> @index.join(" ")
> end
[..]> class Note < ActiveRecord::Base
[..]> acts_as_ferret :fields => {:details => {:store => :yes},
> :notable_id => {},
> :notable_type => {}}
>
> belongs_to :notable, :polymorphic => true
>
[..]>
> But when i searched for a project with the note ''test'':
>
> @results = Project.find_by_contents(''test'')
>
> it returns 0 results. I checked in the logs and it created the index:
>
> Processing NotesController#create (for 127.0.0.1 at 2006-12-11 13:53:53)
> [POST]
> .......
> creating doc for class: Note, id: 17
> Adding field notable_id with value ''9'' to index
> Adding field details with value ''test project 9'' to index
> Adding field notable_type with value ''Project'' to index
> .......
>
[..]>
> This doesn''t seem to work either, but after I have rebuild the
index,
> the note ''test'' now appears on the results. Did I miss
something here?
yeah ;-)
as you can see from the log above, the index is updated correctly when
the note is saved. The problem is *which* index gets updated. It''s the
_notes_ index in this case. The index you are searching when doing
Project.find_by_contents is the _project_ index.
To solve your problem, you should find the relevant project after
creating the note, and do a ferret_update with it, i.e.:
@note = Note.create params[:note]
@note.project.ferret_update
(this will work only if project_id is contained in params[:note])
if you don''t need to find a single note with ferret (with
Note.find_by_contents), you can skip the acts_as_ferret call in
note.rb.
Jens
--
webit! Gesellschaft f?r neue Medien mbH www.webit.de
Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de
Schnorrstra?e 76 Tel +49 351 46766 0
D-01069 Dresden Fax +49 351 46766 66