rails3快捷方式

时间:2011-02-04 02:53:17

标签: ruby-on-rails ruby-on-rails-3

以前我以前做过

project = Project.find_by_name('foo')

现在rails3有更好的语法,所以我开始使用

project = Project.where(:name => 'foo').limit(1).first

然而,这种新风格过于冗长。有没有我应该知道的捷径。

4 个答案:

答案 0 :(得分:3)

第一个应该仍然有效。不是吗?

答案 1 :(得分:2)

添加.limit(1)是多余的;调用.first方法已经为您完成此操作。与其他答案一样,第一种风格应该仍然完美无缺,并且不会弃用。

答案 2 :(得分:1)

如何使用命名范围?

scope :find_foo, where(:name => 'foo').limit(1).first

然后就这样做

Project.find_foo

当然你可以使用lambda

使其动态化

http://edgerails.info/articles/what-s-new-in-edge-rails/2010/02/23/the-skinny-on-scopes-formerly-named-scope/index.html

答案 3 :(得分:0)

只是

有什么问题
project = Project.where(:name => 'foo')

您对find_by_name没有限制,因此我假设名称是唯一的。