問題タブ [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.
ruby-on-rails - Railsの問題で囲んでいるクラスの名前を取得しようとしています
初めて懸念事項を使用し、アドバイスを探しています。
私は location.rb という名前の Rails モデルを持っており、AlbumDefineConcern を含めて、現在どのモデル クラスにいるのか (このクラス Location 内) をクエリしたいと考えています。
私は持っている:
と
クラス名として「場所」を取得するにはどうすればよいですか?
ruby-on-rails - 関連するクラスおよびインスタンス メソッドを動的に定義する
懸念があります:
ご覧のとおり、一連のスコープ、クラス メソッド、およびインスタンス メソッドが定義されています。しかし、私は の繰り返しに満足していませんRole.find_each do |role| ... end
。
この重複をなくすにはどうすればよいですか?私はこれを試しました
included
しかし、複数のブロックがあるため機能しません。メソッドで抽出できますRole.find_each
が、あまり良くありません。
このコードを改善して重複を取り除くにはどうすればよいですか?
ruby-on-rails - Active Concernと通常のRubyモジュールでインスタンスメソッドを追加することの違いは?
アクティブな関心のあるインスタンス メソッドの追加と、モジュールの通常の ruby def キーワードによる追加の違いは何ですか?
と
ruby-on-rails - 名前空間モデルでRails 3で懸念を使用する場合、クラス・メソッドは1回のみ含まれます
次のようなフォルダー構造があります。
私はRails 3にいるので、懸念事項を次のものでオートロードしました:
そして、ファイルは次のとおりです。
quxable.rb
bar.rb
baz.rb
コンソールでこれを行うと、次の出力が得られます。
そのため、最初にアクセスしたモデルにのみ適切に含まれているように見えます。それでも、次を実行すると:
私は得る["Foo::Bar", "Foo::Baz"]
。
ここで何が起こっているのか分かりますか?オートローディング/イーガーローディングで何かを推測していますが、両方のモデルが新しいクラス メソッドを取得していない理由がわかりません。
PS - 以下を使用せずにモジュールを書き直そうとしましたActiveSupport::Concern
(Rails の古いバージョンを使用していて、暗がりで撮影しているという理由だけで):
しかし、私はまだ同じ問題を抱えています。
編集
最初はこれを省略しました (最も単純な問題を提示しようとしているだけです)。しかし、quxable.rb
実際には次のようになります。
だから私は Class オブジェクトで定数を定義するある種の循環依存関係を作成したと推測しています。誰でも確認できますか?ただし、2番目にアクセスされるクラスのクラスメソッドを定義しないことで、サイレントに失敗するのは奇妙です。なぜだかわかりませんか?