[解決済み] モデルでselfを使うタイミングは?
2023-08-18 02:52:54
質問
質問:Railsのモデルでselfを使う必要があるのはどんなときですか?
私は
set
メソッドがあります。
class SomeData < ActiveRecord::Base
def set_active_flag(val)
self.active_flag = val
self.save!
end
end
これを実行すると、すべてがうまくいきます。しかし、こうすると
class SomeData < ActiveRecord::Base
def set_active_flag(val)
active_flag = val
save!
end
end
active_flagの値は変化せず、むしろ無言で失敗します。誰か説明してください。
私は重複を見つけることができませんが、誰かが1つを見つけるなら、それも結構です。
どのように解決するのですか?
メソッドを呼び出しているインスタンスに対してアクションを行う場合、selfを使用します。
このコードで
class SocialData < ActiveRecord::Base
def set_active_flag(val)
active_flag = val
save!
end
end
active_flag という全く新しいスコープ付きローカル変数を定義し、渡された値に設定します。それは何にも関連付けられていないので、メソッドが終了すると、存在しなかったかのようにすぐに捨てられます。
self.active_flag = val
しかし、インスタンスは全く新しい変数ではなく、active_flagという独自の属性を変更するように指示します。それが動作する理由です。
関連
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] 自分」という言葉は何のためにあるのか?
-
[解決済み】Rails: モデルがすでに存在するときに`rails generate scaffold`を実行するにはどうすればよいですか?
最新
-
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の文字列から日付への変換
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"
-
[解決済み] railsでcheck_boxをcheckedにする方法は?