Module: Rails::On::Sorbet::AliasAssociation

Included in:
ActiveRecord::Base
Defined in:
lib/rails/on/sorbet/alias_association.rb

Overview

@requires_ancestor: singleton(ActiveRecord::Base)

Instance Method Summary collapse

Instance Method Details

#_alias_association_definitionsObject

: -> Array[[Symbol, Symbol]]



33
34
35
# File 'lib/rails/on/sorbet/alias_association.rb', line 33

def _alias_association_definitions
  @_alias_association_definitions || []
end

#alias_association(alias_name, target_name) ⇒ Object

Create an alias for an association like belongs_to or has_one

class Foo < ApplicationRecord
  belongs_to :user
  alias_association :owner, :user
end
f = Foo.last
f.owner == f.user #=> true

: (Symbol, Symbol) -> void



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rails/on/sorbet/alias_association.rb', line 17

def alias_association(alias_name, target_name)
  @_alias_association_definitions ||= []
  @_alias_association_definitions << [alias_name, target_name]

  class_eval("    def \#{alias_name}             # def service\n      self.\#{target_name}         #   self.merchant_service\n    end                           # end\n\n    def \#{alias_name}=(val)       # def service=(val)\n      self.\#{target_name} = val   #   self.merchant_service = val\n    end                           # end\n  RUBY\nend\n", __FILE__, __LINE__ + 1)