这可能是一个非常基本的新问题。我需要cretea方法在单个列的模型中进行搜索。该模型称为视频。我想搜索标题栏。我认为这个方法应该是这样的:
class Video < ActiveRecord::Base
def self.sear_for_video_by_title(search_phrase)
#do the search here
end
end
我只是不确定做这样的事情的正确语法是什么。我想我需要使用like关键字。也许是这样的:
video = Video.were(:title).like(search_phrase)
我确信离开了,但那是我要去的基本逻辑。
答案 0 :(得分:1)
假设使用ActiveRecord 3.2.x的Ruby on Rails 3,你可以这样做:
video = Video.where("title like ?", "%#{params[:search_phrase]}%")
将返回您想要的结果。但是这里有一些你需要考虑的事情。
有关详细信息,请参阅http://guides.rubyonrails.org/security.html。
答案 1 :(得分:1)
您可以执行以下操作:
Video.where('title LIKE ?', "%#{search_phrase}%")
制作一个范围:
class Video < ActiveRecord::Base
scope :with_title_like, ->(phrase) { where('title LIKE ?', "%#{phrase}%") }
用法:
@videos = Video.with_title_like('Jurassic')
你可以改进这种研究方法:
phrase
的每个空格并搜索每个字词description
field)