問題タブ [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の問題について尋ねられていることに注意してください。私が検索した他の質問はコントローラーを扱っています。私が見つけた質問はありません、それは懸念を扱っています。
内にcomments_deletion.rbという名前のファイルapp/models/concerns
があり、次のコードが含まれています。
そして、次のコードを記述して、モデルにファイルを混在させようとしています:
これを行うだけで、 を呼び出すrails console
と、次のエラーが表示されます。
私は Rails 4.0.2 を使用していますが、これが原因で気が狂ってしまい、自分のコードの何が問題なのかわかりません。
ruby-on-rails - ActiveSupport::Concern Callback - NilClass の未定義メソッド
を使用して、Rails アプリの複数のモデルに使用できるユーティリティ コールバックを設定しようとしていますActiveSupport::Concern
。次のPostable
モジュールがあります。
/app/models/concerns/postable.rb
これが私のPost
モデルです:
/app/models/post.rb
の新しいインスタンスを作成してPost
を呼び出すとpost.save
、次のエラーが発生します。
ここで何が間違っていますか?
ruby-on-rails - ActiveRecord::Concern から別のクラスに混合せずにクラス メソッドを呼び出すことはできますか?
メソッドを使用していくつかのクラス メソッドを定義するActiveSupport::Concernを作成していclass_methods
ます。通常のモジュールでは、を使用してクラス メソッドを直接呼び出すことができますNameOfModule.target_method
(たとえば、stdlib クラス Math では、so のようにacosMath.acos(x)
を呼び出すのが一般的です) が、同様の呼び出し my を実行する方法を見つけることができませんConcern
。これは可能ですか?
ruby - ActiveSupport::Concern でのクラス変数の使用に対する Ruby の代替
データベースの一部のフィールドで暗号化を使用する必要があるアプリケーションがあります。これは現在、含まれるクラスのフィールドの暗号化と管理の詳細を処理する懸念を使用して実装されています。どのクラスにこの問題が含まれているかをシステムがプログラムで判断できることが重要ですが、さらに具体的には、どのフィールドが暗号化されているかをプログラムで判断する適切な方法が必要です。
今日、これは次のようなクラス変数を使用して実装され、機能しています。
次のように、クラスに含まれます。
クラス変数@@encrypted_attributes
は、含まれているクラス名をキーとして、暗号化された属性の配列を値として、キーと値のペアのハッシュを正しくキャプチャします。暗号化されたモデルがそれ自体とその属性を使用して「登録」するための登録システムを使用することを検討しましたが、これに関連するオーバーヘッドがはるかに多く、私のタイムラインでは、それほど安全でない場合は、より単純なものから始めたいと考えています.
これは現在のアプリケーションで実際にうまく機能していますが、懸念やクラス変数の経験があまりないため、これがどのように動作するかについて重大な誤算をしていないか心配しています. ここの落とし穴はどこですか?Ruby を使い始めてから (それほど前ではありませんが)、クラス変数は一般的に避けるようにプログラムされています。
最初はクラス変数が含まれるクラスのクラス変数になると思っていたので、私はこれに一度噛まれまし@@encrypted_attributes
た。これは明らかにそうではありませんでした。それを含む新しいモデルごとにそれが上書きされるため、このクラス変数自体が明らかに問題であるという結論に達しました。少なくとも、これは私が目撃しているように見える行動です。暗号化されたモデルの完全なリストを取得できるようになったため、これは最終的により望ましい動作であることが判明しました。これには、ロードされたモデルの暗号化されたモデルと属性のリストしか返せないという明らかな制限があります。
だから、私の質問:
これはクラス変数の適切な使用例ですか、それとも同じ情報を取得する別の (より良い?) 方法はありますか? これが受け入れられるクラス変数の使用例である場合、コードが意図したとおりに機能することを保証するために追加する必要がある落とし穴や保護は何ですか?
多分私はあまりにも賢くしようとしているだけで、リストをハードコーディングする必要がありますか? 助けてくれてありがとう!