問題タブ [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 - 2 つのモデルに対して 1 つの方法。モデルの名前を変数としてコントローラーに渡す方法は?
2 つの異なるコントローラー (Posts & Boards) に 2 つのメソッドがあります。それらはほとんど同じです。違いは、モデル-インスタンス-関連付け名のみです。これを DRY するには、メソッドをモジュールに記述しようと思いますが、Post と Board 間で共有するにはどうすればよいですか?
更新OK、メソッドをモデルの問題に移動する場合、ここで関連付けをどのように処理する必要がありますか? ここ@user.posts.pluck(:id)
とここ@user.boards.pluck(:id)
で、投稿とボードを置き換えることができるので、両方で機能しますか?
ruby-on-rails - Railsコントローラーのbefore_filtersの順序と懸念事項
次のように定義された Rails の問題があります。
そしてbefore_filter
、コントローラーレイヤーにもあります:
MyConcern
insideを含める場合MyController
、before フィルターが呼び出される順序は、コードの配置方法に依存しますか? たとえば、
filter_inside_concern
は前に呼び出されますかfilter_inside_controller
(またはその逆)?
ありがとうございました!
ruby-on-rails - Undefined method in ActiveSupport concern
I have a model that extends ActiveRecord::Base
and includes a concern:
UserConcern
is stored in the concerns
directory:
I am getting a run-time error when I try to create a new user by calling the create_user
method that looks like this:
I have two questions about this:
Why is the
some_method
undefined? It seems to me that I am properly including it with the statementinclude UserConcern
. Does it have something to do with myUser
class extendingActiveRecord::Base
? Or maybe something to do with the fact that I am callingsome_methods()
from a class method (i.e.self.create_user()
)?Why does the run-time error refer to
#<Class:0x000000...>
instead of to#<User:0x000000...>
?
ruby-on-rails - Rails の懸念メソッドが別の懸念メソッドをオーバーライドすると、通常のモジュールのように機能しない
ルビーで次の構造を持っているとしましょう(レールなし)
Railsの懸念事項を使用する場合
それで、私はここで何が欠けていますか?通常のモジュールのように、懸念事項で super を使用する必要があります。検索しましたが、このトピックに関するヘルプが見つかりませんでした
ruby-on-rails - ActiveSupport::Concern のテストの動的生成
次のように定義された懸念があります。
そして、このような懸念を使用するさまざまなモデル:
これは意図したとおりに機能し、クラスのインスタンスで呼び出すことができる一連の新しいメソッドを生成します。
私の問題は、懸念をテストしようとしているときに発生します。生成された関数はすべて同じことを行うため、懸念を使用するすべてのモデルのテストを手動で作成することは避けたいと思います。代わりに、rspec を使用shared_example_for
してテストを 1 回記述し、rspec を使用して必要なモデルでテストを実行できると考えましたit_should_behave_like
。これはうまく機能しますが、injectable_attributes
関数に渡したパラメーターへのアクセスに問題があります。
現在、共有仕様内で次のようにしています。
これは機能しますが、これを行うには明らかに恐ろしい方法です。クラスインスタンスで既に定義されているメソッドを見るのではなく、クラスのインスタンスまたはクラス自体を介して、injectable_attributes 関数に渡された値のみにアクセスする簡単な方法はありますか?
ruby-on-rails - 懸念事項に含まれる複数のブロックを追加するにはどうすればよいですか?
すべてを次のように示します。
次に、そのモジュールにブロックが定義されている場合に、追加のブロックを定義する方法は?
ruby-on-rails - Rails の懸念の動的関係
小さなモンゴイド ショッピング カートを持つレール用の gem を作成します。
取得するモデルに含めることで実装されますinclude MongoidCart::ActsAsProduct
-class の -class を -classに持ち込むのに問題がclass_name
あります。クラスへの関係を自動的に追加する必要があります。私が持っているように「ハードコード」すると、エラーはありません。Product
CartItem
MongoidCart::CartItem
:my_product