获取 record 对象
# 查询得到。从 SQL 层面转向到 Ruby 层面
def find_by_sql(sql, binds = [])
result_set = connection.select_all(sanitize_sql(sql), "#{name} Load", binds)
column_types = result_set.column_types.dup
# ...
result_set.map { |record| instantiate(record, column_types) }
enddef instantiate(attributes, column_types = {})
klass = discriminate_class_for_record(attributes)
attributes = klass.attributes_builder.build_from_database(attributes, column_types)
klass.allocate.init_with('attributes' => attributes, 'new_record' => false)
end
def allocate
define_attribute_methods
super
end
def init_with(coder)
@attributes = coder['attributes']
init_internals
@new_record = coder['new_record']
self.class.define_attribute_methods
_run_find_callbacks
_run_initialize_callbacks
self
end最后更新于