[Rails] Re: SQL search
On Feb 27, 2009, at 2:56 PM, Ga Ga wrote: > Rob Biedenharn wrote: >> On Feb 27, 2009, at 11:42 AM, Rob Biedenharn wrote: >>> match_part = >> self.class. >>> >>> Rob Biedenharnhttp://agileconsultingllc.com >>> r...@agileconsultingllc.com >> >> Sorry, if you look at the docs, sanitize_sql is a protected class >> method of ActiveRecord::Base > > Is there some alternative way to it, and not to use protected classes? > -- It's not a protected "class", it's a protected method in the class ActiveRecord::Base which your Article class is a sub-class. If you don't like the form of the call, make your own class method like this: class Article def self.keyword_find(keyword) match_part = sanitize_sql(['MATCH(title, body) AGAINST(?)', keyword]) find(:all, :select => "*, #{match_part} AS score", :conditions => match_part, :order => 'score DESC') end end Then just call "normally": good_articles = Article.keyword_find('chocolate') Does that make you happier? There's nothing wrong with using sanitize_sql, you just need to call it from the Article class rather than 'directly'. -Rob Rob Biedenharn http://agileconsultingllc.com r...@agileconsultingllc.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---
[Rails] Re: SQL search
Rob Biedenharn wrote: > On Feb 27, 2009, at 11:42 AM, Rob Biedenharn wrote: >> match_part = > self.class. >> >> Rob Biedenharnhttp://agileconsultingllc.com >> r...@agileconsultingllc.com > > > Sorry, if you look at the docs, sanitize_sql is a protected class > method of ActiveRecord::Base > Is there some alternative way to it, and not to use protected classes? -- Posted via http://www.ruby-forum.com/. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---
[Rails] Re: SQL search
On Feb 27, 2009, at 11:42 AM, Rob Biedenharn wrote: > On Feb 27, 2009, at 11:29 AM, Ga Ga wrote: >> How I write it in rails format? Articles.find( ) >> >> SELECT *, MATCH(title, body) AGAINST('$keyword') AS score FROM >> articles >> WHERE MATCH(title, body) AGAINST('$keyword') ORDER BY score DESC > > > Obviously, you'd have to try it yourself, but: > > match_part = self.class. > sanitize_sql(['MATCH(title, body) AGAINST(?)', keyword]) > Article.find(:all, :select => "*, #{match_part} AS score", > :conditions => match_part, :order => 'score DESC') > > I'm guessing that the $keyword is from Perl, but I've assumed that you > have a local variable called keyword. Look closely at whether the > conditions end up correct or if things get double-escaped in the final > SQL. > > -Rob > > Rob Biedenharnhttp://agileconsultingllc.com > r...@agileconsultingllc.com Sorry, if you look at the docs, sanitize_sql is a protected class method of ActiveRecord::Base -Rob Rob Biedenharn http://agileconsultingllc.com r...@agileconsultingllc.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---
[Rails] Re: SQL search
Ga Ga wrote: > I get: > > undefined method `sanitize_sql' Help ? -- Posted via http://www.ruby-forum.com/. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---
[Rails] Re: SQL search
I get: undefined method `sanitize_sql' -- Posted via http://www.ruby-forum.com/. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---
[Rails] Re: SQL search
On Feb 27, 2009, at 11:29 AM, Ga Ga wrote: > How I write it in rails format? Articles.find( ) > > SELECT *, MATCH(title, body) AGAINST('$keyword') AS score FROM > articles > WHERE MATCH(title, body) AGAINST('$keyword') ORDER BY score DESC Obviously, you'd have to try it yourself, but: match_part = sanitize_sql(['MATCH(title, body) AGAINST(?)', keyword]) Article.find(:all, :select => "*, #{match_part} AS score", :conditions => match_part, :order => 'score DESC') I'm guessing that the $keyword is from Perl, but I've assumed that you have a local variable called keyword. Look closely at whether the conditions end up correct or if things get double-escaped in the final SQL. -Rob Rob Biedenharn http://agileconsultingllc.com r...@agileconsultingllc.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~--~~~~--~~--~--~---