前提
Userモデルが存在しており、name
というカラムがある
実現したいこと
-
user.name
と呼び出したときに、特定の条件Aのときは、name
を加工して返したい - メソッド名はnameから変えたくない
結論
class User < ActiveRecord::Base
def name
if A
func(name)
else
self[:name]
end
end
end
or
class User < ActiveRecord::Base
def name
if A
func(name)
else
super
end
end
end
エラーになるパターン
class User
def name
if A
func(name)
else
name
end
end
end
user.name
=> "SystemStackError: stack level too deep"
そりゃそうなるよね。
参考にした記事
https://qiita.com/Asama334/items/6fb79e4890a5118d8dee
https://qiita.com/motoakii/items/f4da20611d1536a5ef9a