2

Mongoid 3 でポリモーフィック モデルの親にアクセスする方法はありますか? こんなご縁があります

class Project
  ...
  field "comments_count", :type => Integer, :default => 0
  has_many :comments, :as => :commentable
  ...
end

class Comment
  ...
  field "status"
  belongs_to :commentable, :polymorphic => true

  before_validation :init_status, :on => :create
  after_create :increase_count

  def inactivate
    self.status = "inactive"
    decrease_count
  end

  private
  def init_status
    self.status = 'active'
  end

  def increase_count()
    @commentable.inc(:comments_count, 1)
  end

  def decrease_count()
    @commentable.inc(:comments_count, -1)
  end
  ...
end

comments_countコメントが非アクティブ化されているときに親関係を更新できるようにしたいと思いますcount()。これは、子に対して行うのは非常にコストがかかるためです (アプリでそれを何度も行う必要があります)。動作していますが、( ) 内にincrease_countアクセスできません。何か案は?@commentabledecrease_count@commentable = nil

4

1 に答える 1

1

モデルのインスタンス変数ではないため、@inは不要です。@commentableそう:

 def increase_count()
    commentable.inc(:comments_count, 1)
  end

  def decrease_count()
    commentable.inc(:comments_count, -1)
  end  

トリックを行う必要があります。

于 2012-07-20T02:39:54.820 に答える