[解決済み] Railsモジュールのmattr_accessorとは何ですか?
2022-09-09 20:34:10
質問
Railsのドキュメントを探しても見つからなかったのですが、どうやら 'mattr_accessor'のようです。 は モジュール の傍証となるものです。 'attr_accessor' (getter & setter) を通常のRubyの クラス .
例:クラスで
class User
attr_accessor :name
def set_fullname
@name = "#{self.first_name} #{self.last_name}"
end
end
例:モジュール内
module Authentication
mattr_accessor :current_user
def login
@current_user = session[:user_id] || nil
end
end
このヘルパーメソッドは ActiveSupport .
どのように解決するのですか?
RailsはRubyを拡張し、両方の
mattr_accessor
(モジュールアクセッサ) と
cattr_accessor
(同様に _
reader
/
_writer
のバージョン)。 Rubyの
attr_accessor
のゲッター/セッターメソッドを生成します。
インスタンス
,
cattr/mattr_accessor
でゲッター/セッターメソッドを提供します。
クラス
または
モジュール
レベルで指定します。 このように
module Config
mattr_accessor :hostname
mattr_accessor :admin_email
end
の略です。
module Config
def self.hostname
@hostname
end
def self.hostname=(hostname)
@hostname = hostname
end
def self.admin_email
@admin_email
end
def self.admin_email=(admin_email)
@admin_email = admin_email
end
end
どちらのバージョンも、このようにモジュールレベルの変数にアクセスすることができます。
>> Config.hostname = "example.com"
>> Config.admin_email = "[email protected]"
>> Config.hostname # => "example.com"
>> Config.admin_email # => "[email protected]"
関連
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] 自分」という言葉は何のためにあるのか?
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Pythonモジュールをアンロード(再ロード)するにはどうしたらいいですか?
-
[解決済み] クラスとモジュールの違い
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】RubyにあってPythonにないもの、またその逆は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"
-
[解決済み] Railsでグループとカウント
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?