Skip to content

Commit

Permalink
Merge pull request #48991 from andrewn617/fix-alias-attribute-on-supe…
Browse files Browse the repository at this point in the history
…rclass

Fix defect where aliased attribute methods on abstract classes were not being defined
  • Loading branch information
rafaelfranca committed Aug 21, 2023
2 parents 3b08b67 + 211146b commit 6beb348
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion activerecord/lib/active_record/attribute_methods.rb
Expand Up @@ -65,7 +65,7 @@ def eagerly_generate_alias_attribute_methods(_new_name, _old_name) # :nodoc:
end

def generate_alias_attributes # :nodoc:
superclass.generate_alias_attributes unless base_class?
superclass.generate_alias_attributes unless superclass == Base
return if @alias_attributes_mass_generated

generated_attribute_methods.synchronize do
Expand Down
12 changes: 12 additions & 0 deletions activerecord/test/cases/attribute_methods_test.rb
Expand Up @@ -1246,6 +1246,18 @@ class ChildWithDeprecatedBehaviorResolved < ClassWithDeprecatedAliasAttributeBeh
assert_equal("overridden_subject_was", obj.subject_was)
end

test "#alias_attribute method on an abstract class is available on subclasses" do
superclass = Class.new(ActiveRecord::Base) do
self.abstract_class = true
alias_attribute :id_value, :id
end
subclass = Class.new(superclass) { self.table_name = "topics" }

object = subclass.build(id: 123_456)

assert_equal 123_456, object.id_value
end

private
def new_topic_like_ar_class(&block)
klass = Class.new(ActiveRecord::Base) do
Expand Down

0 comments on commit 6beb348

Please sign in to comment.