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?
答案 0 :(得分:1)
因为包含模块Enumerable
,因此可以对类进行排序。 Arrays实现的大多数方法都来自该特定模块。因此,如果您想创建一个类似于Array的类,您应该实现Enumerable
。
正如您在Active Record中的以下代码中所看到的,您可以注意到它何时包含在类中:
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation.rb#L15
参考文献: