1

残念ながら、私はまだ Rails の初心者すぎるので、さまざまなアプローチを考えて試してみましたが、思うように動作せず、もう一度助けを求める必要があります。

私は REST コメント投票メカニズムを持っており、コメントごとに親指を上げたり下げたりしています。これは正常に機能し、それぞれがcounter_cacheで処理されます。ここで、これらの賛成票と反対票に基づいて、各コメントのプラスマイナス値、thumbs_up-votes - thumbs_down-votes を計算します。それを処理するのが最も効率的な方法かどうかはわかりませんが、プラスマイナス値をコメント モデルの追加の整数属性として持つことを計画しています (親指の上下は独自のモデルです)。したがって、私が基本的に望んでいるのは、thumbs_up が保存されると、コメントの plusminus attr が自動的に になり+= 1、それぞれ thumbs_down.save になることですa -= 1

このようなアクションは、thumbs_up コントローラー内からどのように発行できますか? form_for を変更する必要がありますか、それとも私のアプローチは完全に間違っていますか?

別のモデルの属性を処理するための after_save コールバックはありますか?

4

2 に答える 2

1

実際にはどちらのモデルにも属さないヘルパー メソッドと 2 つの異なるモデルを混在させたくない場合は、Observers http://api.rubyonrails.org/classes/ActiveRecord/Observer.htmlを使用できます。

オブザーバーは1つのモデルを見て何かをします

于 2012-06-04T19:55:29.430 に答える
1

あなたが与えたものから、それを伝えるのは難しい. ただし、コメントの「いいね」と「いいね」を個別に表示する必要がある場合は、それらを Comment モデルのフィールドとして保存することをお勧めします。次に、コメント モデルでヘルパー メソッドを作成して、コメントの評価を取得します。

   def rating
      thumbs_up - thumbs_down
   end

編集: あなたの新しいコメントでは、フィールドではなくヘルパー メソッドを作成することをお勧めします。

   #models/comment.rb
   def rating
      thumbs_up.all.length - thumbs_down.all.length #or whatever way you want to do this
   end
于 2012-06-04T16:49:30.527 に答える