方法
属性
[R] | entries |
类公共方法
new() 链接
源代码: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/message_pack.rb, line 48 def initialize @entries = [] @refs = {}.compare_by_identity end
实例公共方法
add_cached_associations(record, entry) 链接
源代码: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/message_pack.rb, line 81 def add_cached_associations(record, entry) record.class.normalized_reflections.each_value do |reflection| if record.association_cached?(reflection.name) && record.association(reflection.name).loaded? entry << reflection.name << encode(record.association(reflection.name).target) end end end
build_entry(record) 链接
源代码: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/message_pack.rb, line 73 def build_entry(record) [ ActiveSupport::MessagePack::Extensions.dump_class(record.class), record.attributes_for_database, record.new_record? ] end
encode(input) 链接
源代码: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/message_pack.rb, line 53 def encode(input) if input.is_a?(Array) input.map { |record| encode_record(record) } elsif input encode_record(input) end end
encode_record(record) 链接
源代码: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/message_pack.rb, line 61 def encode_record(record) ref = @refs[record] if !ref ref = @refs[record] = @entries.size @entries << build_entry(record) add_cached_associations(record, @entries.last) end ref end