Hi Mike,

Yes. You have to add the ratings column in your database.  But since you are
using the plugin which adds a 'rating' method for your model, you need to
have a different column name for your database, hence Pat and James
suggested the name to be 'cached_rating'.  The reason behind this is
TS/Sphinx only deals with columns that are actually in your database.  So
any method in your model can't be used.

   1. create a migration to add the cached_rating column to your table
   2. add the before_validation callback and necessary methods (as coded by
   Pat) to set the cached_rating value and save it in the database.
   3. rebuild your index
   4. happy searching :D


On Fri, Aug 6, 2010 at 3:42 PM, Mike Disuza <[email protected]> wrote:

> Hi
> I am confused, Are you saying that I have to add the "cached_rating"
> column in my table? If yes then it is better I will store the "rating"
> value by creating a new column in the table. So that i will not be
> having this headche.
>
> Thanks,
> Mike
>
> On Aug 6, 11:44 am, Pat Allan <[email protected]> wrote:
> > Hi Mike
> >
> > I think it's before_validation... and you'd probably want something more
> like:
> >
> >   before_validation :set_cached_rating
> >
> >   def set_cached_rating
> >     self.cached_rating = rating
> >   end
> >
> > This way the value is actually being stored in the database :)
> >
> > --
> > Pat
> >
> > On 06/08/2010, at 4:39 PM, Mike Disuza wrote:
> >
> > > Hi,
> > > I am trying your solution like this
> > > My model is like this:-
> > > "
> > > before_validate :cache_rating
> > > define_index do
> > >    indexes :name,:sortable => true
> > >    indexes cached_rating, :as=>:property_rating
> > > end
> > > def cache_rating
> > >    self.rating
> > > end
> > > "
> > > Whenever I am trying to rebuild the indexing using "rake ts:rebuild",
> > > I am getting error "undefined method `before_validate' for #<Class:
> > > 0xb6cce9c4>"
> >
> > > Can anyone help me out.
> >
> > > Thanks,
> > > Mike
> >
> > > On Aug 5, 11:38 am, James Healy <[email protected]> wrote:
> > >> Mike Disuza wrote:
> > >>> For rating I am using "acts_as_a_rateable" plugin which is giving a
> > >>> rating by using "obj.rating" method.
> > >>> I know that Sphinx does not do indexing of the method.
> >
> > >>> Can anyone have any idea how to solve this?
> >
> > >> I'm not familiar with the acts_as_a_rateable plugin, but you probably
> > >> have 2 options:
> >
> > >> * find out if the plugin stores the rating in your database somewhere
> > >>   and add that column to your index
> >
> > >> * if the rating is purely calculated in ruby, you will have to add a
> > >>   model callback that caches the value in your database. I've
> described
> > >>   this technique a few times on stack overflow, check out [1]
> >
> > >> -- James Healy <[email protected]>  Thu, 05 Aug 2010 16:37:45 +1000
> >
> > >> [1]
> http://stackoverflow.com/questions/3391048/including-rails-activereco...
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups "Thinking Sphinx" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> [email protected]<thinking-sphinx%[email protected]>
> .
> > > For more options, visit this group athttp://
> groups.google.com/group/thinking-sphinx?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Thinking Sphinx" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<thinking-sphinx%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/thinking-sphinx?hl=en.
>
>


-- 
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to