問題タブ [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 投票する
2 に答える
13474 参照

ruby-on-rails - Rails ActiveSupport:Concern と Private メソッド

これは、レールの懸念に関する素晴らしいアイデアです: http://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns

また、パブリック API の一部ではない非常に小さなメソッドを作成することもお勧めします。懸念を使用しないと、それらは ruby​​ クラスのプライベート メソッドになります。

Rails ActiveSupport::Concern モジュール内にプライベート メソッドを作成することは理にかなっていますか? もしそうなら、private は通常のインスタンス メソッドと懸念定義のクラス メソッドの両方で機能しますか?

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

ruby-on-rails-4 - 懸念でstate_machineを定義する方法は?

重複したロジックを懸念事項に含めようとしています。複製されたロジックの一部はstate_machineです。

簡略化すると、DatabaseSiteSftpUserおよびその他には、とりわけ次のものが含まれます。

私はこれを懸念事項にリファクタリングしようとしています:

ただし、これは a に a を実装する正しい方法ではありませstate_machnineん。これは、Double にステートマシンがまったく割り当てられなかったことを示しています。concernNoMethodError: undefined method 'deploy_state' for <DeployableDouble:0xb9831f8>

included doこれを実装するのに実際に正しいコールバックはありますか? state_machineActiveRecord::Base などのサブクラスが必要なのでしょうか? 私が得ていない何か?私は懸念の概念にかなり慣れていません。

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

ruby-on-rails - インスタンスメソッド内から ActiveSupport::Concern クラスメソッドにアクセスする

私は Michael Hartl のチュートリアルに取り組んでいますが、User クラスが少し雑然としているのを見つけていました。機能のチャンクを個別のミックスインにプルすることで、少しクリーンアップしたかったのです ( new-ishActiveSupport::Concernと古いself.included(klass)パターンを使用)。

セッションセクションで少し問題があります。

「models/user/session_management.rb」から:

「models/user.rb」に含めます:

これは、認証モジュール (実際には単なる検証とhas_secure_password) では問題なく機能します。ただし、インスタンス メソッドは、およびクラス メソッドcreate_remember_tokenにアクセスしようとしてスローしています。encryptnew_remember_token

明らかな何かが欠けているように感じます。どんな洞察も大歓迎です。前もって感謝します!

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

ruby-on-rails-4 - 例外: Rails で「定数のオートロード中に load_missing_constant Circular 依存関係が検出されました」

Rails 4.0.2 を使用しています。懸念ディレクトリにサブディレクトリ (モデル名付き) を追加しました。

  • /app/models/concerns/company/cache_concern.rb
  • /app/models/concerns/user/cache_concern.rb
  • /app/models/concerns/document/cache_concern.rb

会社のディレクトリにある cache_concern.rb には、次の内容がありました。

私のモデルクラスでは、次のことがありました。

制作に入るまでは順調でした。次に、次の例外が発生しました。

「load_missing_constant」: 定数 Company::CacheConcern (RuntimeError) のオートロード中に循環依存関係が検出されました

私の問題を解決するために、懸念ファイルの名前空間を Company::CacheConcern から Concerns::Company::CacheConcern に変更します。これにより、本番環境でアプリケーションをロードできます。

しかし、現在、Company クラスを使用している行の懸念ファイルの開発環境に問題があります。

NoMethodError (Concerns::Company:Module の未定義のメソッド「current_company」):

そのため、彼は懸念ディレクトリを検索しているようです。本番環境ではすべて問題ありません。この問題を解決するには、懸念ファイルでクラス名の前に 2 つのコロンを追加して、モデル ディレクトリのクラスを使用します。

アプリ全体をメモリにキャッシュするため、本番モードは開発と同じように動作しないことを知っています。同様の投稿をすべてチェックしました。モデル ディレクトリのクラス名の前に、懸念ファイルで 2 つのコロンを付ける必要がありますか? 誰かがこの奇妙な状況を説明してくれたら、とてもありがたいです。

ありがとう

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

ruby-on-rails - ActiveSupport::Concern とモデルの継承

複数のモデル間でいくつかの動作を共有したいと考えています。少なくとも 2 つのアプローチがあります。

1) ActiveSupport::Concern:

2) モデル (クラス) 継承:

最初の方法の唯一の利点は、必要な数のモジュールを含めることができることです。両方のアプローチのその他の利点/欠点はありますか?