インスタンス変数

参考:

アクセスメソッド | Ruby入門

クラスレベル/モジュールレベルの変数を定義する方法

  • 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_accessormattr_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]

Rails の `CurrentAttributes` は有害である 翻訳 | TechRacho

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です