使用Rails的Mongoid外键属性的自定义setter

时间:2011-10-13 23:02:19

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid

在我的rails应用程序中,有一个像这样的树状模型:

class File
  belongs_to :parent, :foreign_key => "parent_id", :class_name => "File"
end

我想为父设置器的行为添加功能。这样的事情(除了它不起作用)?

def parent=(new_parent)
  super(new_parent)
  # Additional stuff I want to do here
end

我需要默认行为仍然存在,因为我认为它管理关系,但我需要知道什么时候父更改,所以我可以做一些额外的任务。

1 个答案:

答案 0 :(得分:0)

我目前的解决方法是:

class File   
  belongs_to :parent, :foreign_key => "parent_id", :class_name => "File"   
  before_save :check_parent

  def check_parent
    if self.parent_id_changed?
      # Additional stuff I want to do here
    end   end end

唯一的缺点就是你需要为此付出代价。理想情况下,我希望在parent_id改变后立即启动。否则,这可以正常工作,但我会接受更好的解决方案。