ruby-on-rails – 如何使Rails中的named_scope返回一个值而不是
发布时间:2020-12-16 20:44:54 所属栏目:百科 来源:网络整理
导读:我想写一个 named scope从它的id获得记录. 例如,我有一个名为Event的模型,我想使用named_scope来模拟Event.find(id),以实现未来的灵活性. 我在我的模型中使用了这个代码: named_scope :from_id,lambda { |id| {:conditions = ['id= ?',id] } } 我把它从我的
我想写一个
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |