ruby-on-rails – 如何使Rails中的named_scope返回一个值而不是数组?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使Rails中的named_scope返回一个值而不是数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想写一个 named scope从它的id获得记录.

例如,我有一个名为Event的模型,我想使用named_scope来模拟Event.find(id),以实现未来的灵活性.

我在我的模型中使用了这个代码

named_scope :from_id,lambda { |id| {:conditions => ['id= ?',id] } }

我把它从我的控制器称为Event.from_id(id).但是我的问题是它返回一个Event对象数组,而不是一个对象.

因此,如果我想获取事件名称,我必须写

event = Event.from_id(id)
event[0].name

而我想要的是

event = Event.from_id(id)
event.name

我在这里做错了吗?

解决方法

正如Damien提到的,使用自定义范围只是通过ID查找是不可取的.但是要回答你的问题:

使用named_scope查找记录将始终返回一个ActiveRecord :: NamedScope :: Scope对象,其行为类似于数组.如果您的查询只返回一条记录,则可以使用第一种方法直接获取ActiveRecord对象,如下所示:

event = Event.from_id(id).first
event.name # will work as you expect

猜你在找的Ruby相关文章