Spy*_*ros 3 ruby activerecord ruby-on-rails
我试图理解一些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)]
Run Code Online (Sandbox Code Playgroud)
现在,我不希望输出.我会期待像Relation或类似的东西.但它似乎遍历每个属性并为每个属性生成类型.
Ruby的术语中的关系到底是什么?它是完全定制的结构吗?如果是这样,哈希和数组之间是否存在相似之处,还是应该将其视为完全自定义的结构?
编辑:
经过一些更多的测试,它似乎只包含该类的对象.它是如何运作的?
Rails 3中的ActiveRecord的Relation类实际上只是Arel之上的一层.它处理收集"延迟加载"和Rails简化查询方法的参数(与直接Arel相比).
我所看到的关于它的内部运作的最佳描述是在Ernie Miller的博客上.他写了meta_search和meta_where,所以他知道他在说什么.
| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |