can you use activerecord to find substring of a field? (quick & dirty keyword finder)
Solution 1:
Yeah, just use a LIKE statement in MySQL.
In Rails 2.x:
Table.find(:all, :conditions => ['keywords LIKE ?', '%crescent%'])
In Rails 3.x:
Table.where('keywords LIKE ?', '%crescent%').all
Solution 2:
The Postgres database syntax would be:
YourModelName.where("yourFieldName like ?", "%" + yourSearchTerm + "%")
Solution 3:
It all depends on your DB. Is it Postgres? MySQL? MongoDB? Anything else?
With Postgres, you could use something like :
Rails 2.x => Model.find(:all, :conditions=>["models.keywords ~= ?", 'crescent'])
Rails 3.x => Model.where("models.keywords ~= ?", 'crescent')
You just have to find the right syntax for your DB / Rails / ActiveRecord version.
Solution 4:
I had a similar issue. I needed to see if there are keywords passed from conrolled input in the frontend component in the body of any questions in my questions table. Here is how I did it in my controller:
def search
input = params[:q]
@questions = Question.all
search_words = input.split(' ')
@found_question = [];
search_words.each do |word|
@found_question << Question.where("questions.body LIKE ?", "%#{word}%")
end
end