【发布时间】:2017-10-04 05:48:21
【问题描述】:
ActiveRecord::Relation 类如何像数组一样工作?
例如,
User.all
=> #<ActiveRecord::Relation [#<User id: 1, name: "Alex", nickname: "leha", created_at: "2017-05-05 12:36:31", updated_at: "2017-05-05 12:36:31">]>
它返回 ActiveRecord::Relation,其行为类似于 Array。
如果我创建自己的课程MyClass
class MyClass
attr_accessor :relation
def initialize(options)
@relation = options
end
end
m = MyClass.new [1,2,3]
=> #<MyClass:0x007ffa3f9ab730 @relation=[1, 2, 3]>
问题是如何制作像 ActiveRecord::Relation 这样的类?
【问题讨论】:
-
哦,问题不是关于如何使用AR,我是问如何制作像ActiveRecord::Relation这样的子类,它的作用类似于数组。
-
你所说的“像数组一样”是什么意思?
-
在AR中你可以使用
User.all[0]。在我的情况下MyClass.new([1,2,3]).relation[0]。如何在我可以使用MyClass.new([1,2,3])[0]的地方上课? -
为什么不将
:[]方法委托给relation?查看Forwardablemodule in ruby stdlib. -
@GlebVishnevsky 还有,只是为了澄清一下,您不是在这里继承 AR,而是将其包装到您自己的类中。
标签: ruby-on-rails arrays ruby activerecord