Techioz Blog

Ruby/Rails表現。 ActiveRecord クラスの self[:reason] とは何ですか?

概要

非常に古いコードの中に次の式を見つけました。

def reason
  self[:reason].try(:to_sym)
end

これは、ApplicationRecord を (最終的には) 継承する通常のモデル クラスのメソッドであり、特別なことは何もありません。

誰か、self[:reason] が何なのか説明してもらえませんか?

解決策

ActiveRecord::AttributeMethods#[] は型キャストされた後に属性の値を返します

おそらく同じ効果ですが、より読みやすくなります:

def reason
  super&.to_sym
end