投稿とトピックの両方にHABTMがあります。 A HABTMポスト、およびトピックHABTMポストを参照してください。しかし、これは今私が勝ったpost.topics=()
HABTM属性のセッターのalias_method_chainが機能しない
を壊し
def topics_with_extra_stuff=(topics)
topics_without_extra_stuff=(topics)
extra_stuff()
end
alias_method_chain :topics=, :extra_stuff
:私は何をする必要があることはこれは私がPost.rbでやってみたことあるpost.topics=()
を呼び出すことと併せて、いくつかのメソッドを呼び出すことです何もエラーはありませんが、topics()
は変更後も以前の値になりますtopics=()
topics_with_extra_stuff=
にエラーが発生した場合、トレースにはtここにはtopics=
のエラーがあったので、そこに入るのが分かります。私はまたが呼ばれたことを知っています。
は、ここでは、出力の例です:
>> p = Post.last
=> #<Post id:1 ....>
>> p.topics
=> [#<Topic id:1 ....>, #<Topic id:2 ....>]
>> p.topics = [ p.topics.first ]
=> [#<Topic id:1 ....>]
>> p.topics
=> [#<Topic id:1 ....>, #<Topic id:2 ....>]
それはまだ2つのトピックス、任意の洞察力のためのちょうど1
感謝を持つべきではありません。
私はあなたがそれを行う必要がありますとは思わない - 連想アクセサをモジュール内に作成されますので、あなたのクラスに含まsuper()を再定義して呼び出すことができるはずです –