問題タブ [alias-method]
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 - alias_method、alias_method_chain、およびself.included
少しわかりづらいalias_method
/ alias_method_chain
。私は次のコードを持っています:
form_for
これは、私が望んでいることを正確に実行します。呼び出しの先頭に「チェリーを上に」を追加します。
しかし、私の理解では、これはいくつかの理由で適切なコードではありません。まず、他のオーバーライドにチェーンされないform_for(?)
ため、「さらに別のチェリーを上に」追加する2番目のform_for
メソッドを作成した場合、表示されません。そして第二に、そして、alias_method
ちょっとalias_method_chain
時代遅れの解決策であり、self.included
代わりにモジュールを使用して送信する必要があります。
self.included
しかし、このメソッドを呼び出すことはできませんform_for
。親メソッドを呼び出し続けるだけです。これが私が試していることです:
私の上記の解決策は機能しますが、それが間違ったやり方であるのではないかと疑っています。ルビーのベテランがこれを行うためのよりエレガントな方法を教えてくれるなら-そして/または2番目の解決策が呼ばれていない理由-私は感謝するでしょう。
ruby-on-rails - Ruby / Rails:alias_methodプラクティス
Railsの「fields_for」メソッドをオーバーライドしようとしています。これは現在、次のように実行しています。
機能は問題なく機能しますが、alias_methodの使用が最もエレガントではないのではないかと思い始めています。特に、この機能をgemにパッケージ化し、fields_forを上書きする別のgemがあった場合、新しいfields_forまたは代替fields_forのいずれかがスキップされると考えて書き込みますか?
そうだとすると、既存のRailsメソッドにいくつかの追加機能を追加する正しい方法は何ですか?
乾杯...
ruby - Ruby でメソッドエイリアスを削除できますか?
メソッドにエイリアスを設定したい Ruby コードのセクションがあるとします (理由はわかりませんが、正当な理由があるとしましょう)。
このセクションの後、このエイリアスを削除することはできますか?
ruby-on-rails - Rails モデルで alias_method が失敗する理由
最初の呼び出しで次のようalias_method
に失敗します。
たとえば、失敗すると失敗しますCountry.first
。
しかし、コンソールではCountry.first.langEN
正常に呼び出すことができ、2 番目の呼び出しも機能することがわかります。
私は何が欠けていますか?
ruby - メソッドを複数回エイリアスする
alias_method
1 つの元のメソッドに 2 つのエイリアスを配置したいのですが、1 つずつではなく、一度に複数のエイリアスを実行する機能がわかりません。
したがって、これから変更する可能性はありますか:
このようなものに:
カスタムメソッドの作成には興味がありません。
ruby-on-rails - to_s にエイリアスを設定することはできますか?
モデルをオーバーライドする代わりにto_s
、 という既存のメソッドにエイリアスを付けたいと思いfull_name
ます。
alias
との両方alias_method
が期待どおりに機能していないようです。
使用するalias
使用するalias_method
ruby - 親コントローラーの「レイアウト」にアクセスするには?
私のコントローラーの 1 つで、ある条件を指定してレイアウトを変更し、それ以外の場合は、親 ApplicationController が使用するデフォルトのレイアウトを維持したいと考えています (最初は「アプリケーション」でしたが、現在は他のいくつかを試しています)。alias_method を使用して「レイアウト」にアクセスしようとしましたが、うまくいかないようです。私のコード:
これによりエラーが発生します。