Mysql 在Rails3中正确地查找:first、:order的语法?

Mysql 在Rails3中正确地查找:first、:order的语法?,mysql,ruby-on-rails-3,activerecord,find,Mysql,Ruby On Rails 3,Activerecord,Find,我目前正在使用以下内容检索城镇名称: place = Town.find(:first, :conditions => ["name = ?", params[:place_post]]) place ||= Town.find(:first, :order => "damlev(`towns`.`name`, '" + params[:place_post] + "')") 最好的方法是什么,命名范围等等,我只是觉得这是很好的垃圾和糟糕的做法 谢谢 如果params[:place

我目前正在使用以下内容检索城镇名称:

place = Town.find(:first, :conditions => ["name = ?", params[:place_post]])
place ||= Town.find(:first, :order => "damlev(`towns`.`name`, '" + params[:place_post] + "')")
最好的方法是什么,命名范围等等,我只是觉得这是很好的垃圾和糟糕的做法


谢谢

如果params[:place_post]是城镇名称:

place=Town.find(:first,:conditions=>[“name=?”,params[:place\u post],:order=>“name[ASC | DESC]”)

使用ASC或DESC

使用ARel语法更新了

place=Town.where(:name=>params[:place_post]).order(“name[ASC|DESC]”)。first()

或:

place=Town.order(“name[ASC | DESC]”)。按名称查找(params[:place_post])

我不知道demlev函数的确切含义,但这可能有用:

place=Town.order(“demlev(name,{quoted_place_post]})[ASC|DESC]”)。按名称查找(params[:place_post])


quoted_place_post可以是Town。quote_value(参数[:place_post])

感谢您的回复。那么这是正确的方法吗?我刚刚在Rails 3的一些示例中介绍了Town.order().first()的用法。为了澄清[:place_post]是该镇的名称:)两者都是等效的(目前,使用方法链接的是ARel。显然,Rails 3.1中的第一个语法将被弃用。这非常有效。谢谢,我知道其中有一些东西。但是,它并没有完全回答我的问题,因为我想知道如何在levenshtein函数中包含参数,以及这是否应该是一个命名范围?还感谢您解释ARel,因为我是Rails新手,只是尝试学习所有正确的实践,正如您所说,不是那些很快就会被弃用的实践。我不熟悉demlev函数。。。但是,据我所知,它通常需要2个参数,也许你可以将其用作:demlev(参数[:place_post1],参数[:place_post2])。我现在将此标记为已回答,感谢你的输入更改了我的大部分发现等,并且必须处理订单方面和范围。