首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ActiveRecord::Relation对象

使用ActiveRecord::Relation对象
EN

Stack Overflow用户
提问于 2011-06-24 14:59:15
回答 1查看 1K关注 0票数 2

我使用Rails 3.0.7,我想初始化一个新的ActiveRecord::Relation,这样我就可以用类对象(所有相同“类型”的对象)填充它,使用<<方法;否则(为了满足我的需要),我必须识别一个新的array类,但是使用这个数组我不能运行方法(例如whereorder等.)至于ActiveRecord::Relation

看到RoR代码我在以下文件中找到了这个:

代码语言:javascript
运行
复制
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方法。

EN

回答 1

Stack Overflow用户

发布于 2011-06-25 07:17:08

我不太明白你的要求。对于应用程序的要求,没有听说过覆盖初始化。API非常强大,通常不需要覆盖AREL方法。

你能用像MyModel.scoped这样的东西来得到基本关系吗?您是否正在寻找两个集合(一个来自DB,一个预先准备好)?

根据注释: MyModel.scoped将提供一个基本关系--您可以这样做:

代码语言:javascript
运行
复制
pre_prepared_items = [item1, item2, item3]
my_items = MyModel.where("x = z").order("a ASC")
@mixed_items = pre_prepared_items + my_items

或者,您可以准备两个不同的集合,然后由视图相应地显示它们。

代码语言:javascript
运行
复制
@pre_prepared_items = [item1, item2, item3]
@my_items = MyModel.where("x = z").order("a ASC)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6469647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档