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.
