Ruby on rails rails3快捷方式

Ruby on rails rails3快捷方式,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,以前我是这样做的 project = Project.find_by_name('foo') 现在rails3有了更好的语法,所以我开始使用 project = Project.where(:name => 'foo').limit(1).first 然而,这种新风格太冗长了。有没有一条捷径我应该知道。第一条应该仍然有效。不是吗?第一个应该还能用。不是吗?光有什么不对 project = Project.where(:name => 'foo') 您对“按名称查找”没有限制,因

以前我是这样做的

project = Project.find_by_name('foo')
现在rails3有了更好的语法,所以我开始使用

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

然而,这种新风格太冗长了。有没有一条捷径我应该知道。

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

第一个应该还能用。不是吗?

光有什么不对

project = Project.where(:name => 'foo')
您对“按名称查找”没有限制,因此我假设名称是唯一的。

仅查找有什么问题吗

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

您对“按名称查找”没有限制,因此我假设名称是唯一的。

使用命名范围如何

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

Project.find_foo
当然,您可以使用lambda使其成为动态的


使用命名范围如何

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

Project.find_foo
当然,您可以使用lambda使其成为动态的


添加
。限制(1)
是多余的;调用
.first
方法已经可以为您实现这一点。就像其他答案提到的那样,第一种样式应该仍然可以很好地工作,并且不会被弃用。

添加一个
.limit(1)
是多余的;调用
.first
方法已经可以为您实现这一点。正如其他答案所提到的,第一种样式应该仍然可以很好地工作,并且不会被弃用。

您确定它是应用程序中的瓶颈吗?你分析过它吗?它似乎在你的应用程序的整体范围内是次要的。你确定它是你应用程序的瓶颈吗?您分析过它吗?它似乎在您的应用程序的整个范围内是次要的。
find_by_name
始终只返回一条记录,即使您没有唯一的名称。如果您想要所有名称,您必须执行
find_all_by_name
.project=project.where(:name=>'foo')。首先,仍然不需要限制
project.where(:name=>'foo')。首先
然后:)
find_by_name
始终只返回一条记录,即使您没有唯一的名称。如果你想要所有的名字,你必须做
find_all\u by_name
.project=project.where(:name=>'foo')。首先,仍然不需要限制
project.where(:name=>'foo')。首先
然后:)