Sha256: 3c2f711aaca25da5f4f6a8a75a40678f80e51a9794610c16b5c720f00150d442
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true module Orthoses module ActiveRecord class BelongsTo def initialize(loader) @loader = loader end def call @loader.call.tap do |store| ::ActiveRecord::Base.descendants.each do |base| next if base.abstract_class? base_name = Orthoses::Utils.module_name(base) || next lines = base.reflect_on_all_associations(:belongs_to).flat_map do |ref| # FIXME: Can I get list of class for polymorphic? type = if ref.polymorphic? 'untyped' else begin Utils.module_name(ref.klass) or next rescue NameError => e while e Orthoses.logger.warn(e.message) e = e.cause end next end end opt = "#{type}?" [ "def #{ref.name}: () -> #{opt}", "def #{ref.name}=: (#{opt}) -> #{opt}", "def reload_#{ref.name}: () -> #{opt}", ].tap do |ary| if !ref.polymorphic? ary << "def build_#{ref.name}: (?untyped attributes) ?{ (#{type}) -> void } -> #{type}" ary << "def create_#{ref.name}: (?untyped attributes) ?{ (#{type}) -> void } -> #{type}" ary << "def create_#{ref.name}!: (?untyped attributes) ?{ (#{type}) -> void } -> #{type}" end end end generated_association_methods = "#{base_name}::GeneratedAssociationMethods" store[generated_association_methods].tap do |content| content.header = "module #{generated_association_methods}" content.concat(lines) end sig = "include #{generated_association_methods}" store[base_name] << sig if !store[base_name].body.include?(sig) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
orthoses-rails-1.1.0 | lib/orthoses/active_record/belongs_to.rb |
orthoses-rails-1.0.0 | lib/orthoses/active_record/belongs_to.rb |