🖥
#Rails ( ActiveRecord ) で alias / alias_method がエラーを起こすので alias_attrib
Class
class User < ApplicationRecord
alias_attributes :some_name, :name
end
run example
User.last.name
# Alice
User.last.alias_name
# Alice
Error case ( alias / alias method )
alias foo_alias_name name
# NameError: undefined method `name' for class `User (call 'User.connection' to establish a connection)'
alias_method :bar_alias_name, :name
# NameError: undefined method `name' for class `User (call 'User.connection' to establish a connection)'
Why?
- alias / alias_method が使えないのは評価順、ActiveRercord的なメソッド生成タイミングの問題と思われる
- ActiveRecord によってメソッド生成されたあとにOpenClass すると alias をつけることも出来る様子
Open class
Before ActiveRecord Model methods occur
class User
alias alias_name name
end
# NameError: undefined method `name' for class `User'
Open class
After ActiveRecord Model methods occur
User.first # Maybe ActiveRecord method occurs in this timing
class User
alias alias_name name
end
User.first.alias_name
# => "Alice"
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2020-04-14
Discussion