0

これが私のlike.rbモデルです

class Like < ActiveRecord::Base
  attr_accessible :user_id, :post_id

  before_save :increment_post_total_likes

  before_destroy :decrement_post_total_likes

  scope :desc_ordered, :order => "created_at DESC"

  belongs_to :post
  belongs_to :user

  def increment_post_total_likes
    p = Post.find(self.post_id)
    p.increment!(:total_likes)
    p.save
  end

  def decrement_post_total_likes
    p = Post.find(self.post_id)
    p.decrement!(:total_likes)
    p.save
  end

  def self.alreadyLiked(post_id, user_id)
    where(:user_id => user_id, :post_id => post_id).any?
  end

  def self.already_liked?(user_id)
    exists?(:user_id => user_id)
  end

end

問題は、投稿が好きな場合、投稿列がインクリメントされるだけでなく、それらの2つの関連する列をtotal_likes共有する別のテーブル列もインクリメントされ、理由がわかりません...post_iduser_id

likesテーブルだけで before_save と before_destroy を使いたい

4

1 に答える 1

1

increment!レコードを保存します。強打せずに試してみてください。

于 2012-09-03T14:45:35.233 に答える