加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读