【问题标题】:What is an ActiveRecord Rails Relation really?什么是 ActiveRecord Rails 关系?
【发布时间】:2011-04-30 21:03:31
【问题描述】:

我试图了解 Rails 关系的一些内部结构,以便在查询中有效地使用它们。于是,我打开了一个控制台,做了一些测试:

ruby-1.9.2-p180 :036 > Skill.where(:second_class => 'Wealth Ranger').map {|att| att.class}
 => [Skill(id: integer, name: string, description: string, second_class: string, third_class: string, created_at: datetime, updated_at: datetime)]

现在,我不希望有这样的输出。我希望像 Relation 或类似的东西。但它似乎遍历每个属性并为每个属性生成类型。

Ruby 中的关系到底是什么?它是完全定制的结构吗?如果是这样,哈希和数组之间是否有相似之处,还是应该将其视为完全自定义的结构?

编辑:

经过更多测试,它似乎只包含该类的对象。它是这样运作的吗?

【问题讨论】:

标签: ruby-on-rails ruby activerecord


【解决方案1】:

Rails 3 中 ActiveRecord 的Relation class 实际上只是Arel 之上的一层。它处理为“延迟加载”和 Rails 的简化查询方法(与直接 Arel 相比)收集参数。

我在Ernie Miller's blog 上看到了关于它的内部运作的最佳描述。他写了meta_searchmeta_where,所以他知道他在说什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多