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')。首先然后:)