問題タブ [activesupport-concern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
257 参照

ruby-on-rails - Rails ActiveSupport::懸念事項とメソッドの評価

current_userヘルパーでDeviseを使用するこのアプリケーションがあります。モジュールを作成すると、それが決して起こらないのに、それへの帰属を言及した後にcurrent_userなります。nil

そしてModuleTest :

出力:

ただし、この行を削除/コメントアウトすると# current_user = nil if falsecurrent_user有効なままになります。

これは、遅延評価と多少関係がありますか?

編集

全体の問題は、ステートメントが評価されない場合に Ruby が変数を定義する方法に依存しています。

これは下でどのように機能しますか?

0 投票する
0 に答える
46 参照

ruby - 「ホスト」クラスが完全にロードされた後に懸念コードを実行する

バックグラウンド

次のような ActiveRecord の懸念があります。

これを実行すると (よく似たようなものです)、"hello" 例外が発生します。これは、 の時点でinclude Xyzカスタム テーブル名がまだ設定されていないため table_exists?ですfalse

行を切り替えると、すべてが正常に機能します (つまり、例外はありません)。

質問

現在の動作 (どちらの場合も) はまったく問題なく、予想どおりですが、発信者にとっては少し不快です。

「ホスト」クラスが完全にロードされるまでコード (この不自然な例では、 ) が遅延するようにモジュール定義を変更する方法はありますか?raise

0 投票する
1 に答える
77 参照

ruby-on-rails - Railsのロークラフトの懸念により、モジュールの定数が失われるのはなぜですか?

Rails 4.2 で一定の​​ "Complete" を使用する Orderable の問題があります。app/models/concerns/orderable.rb:

Rails コンソールで を実行するOrderable.constantsと、 が返されます[:COMPLETE]。ただし、Orderable の問題をRailsに関するモジュールで説明されている「控えめな」スタイルに変更すると、次のようになります。

その後Orderable.constants、Rails コンソールで実行すると が返されます[]。Railsのドキュメントには、「懸念事項を定義するための簡単な近道は...同等である」と書かれています。この単一の変更が、モジュールの定数へのアクセスを失うという影響を与えるのはなぜですか? どういうわけかそれらを再定義する必要がありますか?