インスタンス変数
参考:
クラスレベル/モジュールレベルの変数を定義する方法
cattr_accessor
/mattr_accessor
class_attribute
attr_accessor
(class << self
内で定義)
参考:
これは MUST! ActiveSupport の Class#class_attribute を使おう!- Qiita
クラスレベルの3つのアクセサを比較する 翻訳 | TechRacho
cattr_accessor – Module | Ruby on Rails API [Official]
mattr_accessor – Module | Ruby on Rails API [Official]
instance method Module#attr_accessor (Ruby 2.5.0)
クラス変数と cattr_accessor の違いは? – スタック・オーバーフロー
クラス変数(cattr_accessor / mattr_accessor)
Active Support による拡張。
クラス変数のアクセッサー (クラスメソッド及びインスタンスメソッド) を定義する。cattr_accessor
は mattr_accessor
のエイリアス。
module HairColors mattr_accessor :hair_colors end class Person include HairColors end HairColors.hair_colors = [:brown, :black, :blonde, :red] HairColors.hair_colors # => [:brown, :black, :blonde, :red] Person.new.hair_colors # => [:brown, :black, :blonde, :red]
参考:
cattr_accessor – Module | Ruby on Rails API [Official]
class_attribute
サブクラスへと継承可能なクラスレベルのアトリビュートを宣言する。サブクラスで値を変更しても親クラスでの値には影響しない。デフォルトでクラスレベルのアクセッサーに加えてインスタンスレベルのアクセッサーが定義される。default
オプションで初期値を設定することができる。
基本クラスでクラスアトリビュートを宣言する。
class Base class_attribute :config, default: { name: "Base" } end
クラスもしくはインスタンスでアトリビュートを使用する。
Base.config[:name] # => "Base" obj = Base.new obj.config[:name] # => "Base" obj.config = Base.config.dup obj.config[:name] = "John" obj.config[:name] # => "John" Base.config[:name] # => "Base"
参考:
これは MUST! ActiveSupport の Class#class_attribute を使おう!- Qiita
class_attribute – Class | Ruby on Rails API [Official]
class_attribute – rails/attribute.rb at v5.2.3 · rails/rails – GitHub
attr_internal_*
attr_internal_accessor
attr_internal_reader
attr_internal_writer
参考:
attr_internal_accessor – Module | Ruby on Rails API [Official]
attr_internal_reader – Module | Ruby on Rails API [Official]
attr_internal_writer – Module | Ruby on Rails API [Official]
rails/attr_internal.rb at 5-2-stable · rails/rails – GitHub
CurrentAttributes
参考:
ActiveSupport::CurrentAttributes | Ruby on Rails API [Official]