だから私は投稿とトピックの両方にHABTMを持っています。投稿HABTMトピック、およびトピックHABTM投稿。私がする必要があるのは、呼び出しと組み合わせていくつかのメソッドを呼び出すことですpost.topics=()
これは私がPost.rbでやってみたことです:
def topics_with_extra_stuff=(topics)
topics_without_extra_stuff=(topics)
extra_stuff()
end
alias_method_chain :topics=, :extra_stuff
しかし、これは今壊れていますpost.topics=()
エラーなどは発生しませんが、topics()
で変更した後も古い値のままになりますtopics=()
でエラーを発生させたtopics_with_extra_stuff=
場合、トレースはでエラーが発生したことを示しtopics=
ているので、そこに入っていることがわかります。私もそれextra_stuff()
が呼ばれたことを知っています。
出力の例を次に示します。
>> 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つだけです。
洞察をありがとう。