class RelationToJSON::HasOneReflection
Public Instance Methods
association_relation(transposed)
click to toggle source
# File lib/relation_to_json/has_one_reflection.rb, line 21 def association_relation(transposed) query = { foreign_key => transposed[primary_key] } query[polymorphic_association_key] = foreign_class if polymorphic? klass.where(**query) end
foreign_class()
click to toggle source
# File lib/relation_to_json/has_one_reflection.rb, line 36 def foreign_class reflection.active_record.name end
pluck_association_columns(transposed)
click to toggle source
# File lib/relation_to_json/has_one_reflection.rb, line 5 def pluck_association_columns(transposed) return recurse_json_with_schema(transposed) if nested_relations? required_columns = Set[primary_key, *@required_columns] plucked_attributes = association_relation(transposed) .pluck(*required_columns) .map { |plucked| required_columns.zip(Array.wrap(plucked)).to_h } foreign_key_indexed_plucked_values = plucked_attributes .to_h { |attributes| [attributes[foreign_key], attributes] } transposed.fetch(primary_key, []).map do |record_foreign_key| foreign_key_indexed_plucked_values[record_foreign_key] end end
polymorphic?()
click to toggle source
# File lib/relation_to_json/has_one_reflection.rb, line 27 def polymorphic? reflection.inverse_of.polymorphic? end
polymorphic_association_key()
click to toggle source
# File lib/relation_to_json/has_one_reflection.rb, line 31 def polymorphic_association_key # *_type reflection.type end