我有几条title
开头的记录:
如何选择标题以#34; Nick"开头的所有记录?并按正确的顺序呈现它们?类似的东西:
@records = Record.where(title starts with: params[:title_name])
render json: @records
答案 0 :(得分:2)
您可以在此处使用LIKE
运算符:
@records = Record.where('title LIKE ?', "#{params[:title_name]}%").order(:title)
我更愿意将这些放入范围:
scope :title_search, ->(title){ where('title LIKE ?', "#{title}%") }
并通过以下方式调用:
@records = Record.title_search(params[:title_name])
答案 1 :(得分:0)
您可以尝试Searchlogic。
然后它就像:
一样简单@search = Record.new_search(params[:search])
@search.condition.title_starts_with = "Nick"
@models = @search.all
或者你可以尝试
Record.where("title LIKE :prefix", prefix: "#{prefix}%")
答案 2 :(得分:0)
我建议在“How to do a LIKE query in Arel and Rails?”
中使用arelrecords = Record.arel_table
Record.where records[:title].matches("#{params[:title_name]}%")