我使用Rails 3.0.7,我想初始化一个新的ActiveRecord::Relation
,这样我就可以用类对象(所有相同“类型”的对象)填充它,使用<<
方法;否则(为了满足我的需要),我必须识别一个新的array
类,但是使用这个数组我不能运行方法(例如where
、order
等.)至于ActiveRecord::Relation
。
看到RoR代码我在以下文件中找到了这个:
def initialize(klass, table)
@klass, @table = klass, table
@implicit_readonly = nil
@loaded = false
SINGLE_VALUE_METHODS.each {|v| instance_variable_set(:"@#{v}_value", nil)}
(ASSOCIATION_METHODS + MULTI_VALUE_METHODS).each {|v| instance_variable_set(:"@#{v}_values", [])}
@extensions = []
end
但我还没有找到关于这方面的好文件。
如何初始化一个ActiveRecord::Relation
**?直接处理“定制”** ActiveRecord::Relation
对象是一种常见的做法吗?你有什么建议?
P.S.:也许我必须使用AssociationCollection,因为在添加(使用<<
)类对象的所有操作结束时,我需要使用它的相关replace
方法。
发布于 2011-06-25 07:17:08
我不太明白你的要求。对于应用程序的要求,没有听说过覆盖初始化。API非常强大,通常不需要覆盖AREL方法。
你能用像MyModel.scoped
这样的东西来得到基本关系吗?您是否正在寻找两个集合(一个来自DB,一个预先准备好)?
根据注释: MyModel.scoped将提供一个基本关系--您可以这样做:
pre_prepared_items = [item1, item2, item3]
my_items = MyModel.where("x = z").order("a ASC")
@mixed_items = pre_prepared_items + my_items
或者,您可以准备两个不同的集合,然后由视图相应地显示它们。
@pre_prepared_items = [item1, item2, item3]
@my_items = MyModel.where("x = z").order("a ASC)
https://stackoverflow.com/questions/6469647
复制相似问题