永远不会调用ActiveRecord模型的属性设置器

时间:2012-04-16 09:54:28

标签: ruby-on-rails-3

我只想覆盖属性“parent_id”的setter,以便在设置值时执行其他操作。

但是从未调用过二传手。 (该值可以被怀疑检索,因此很明显由另一种方式的rails设置)

如何实现我的目标?

class Category < ActiveRecord::Base
  acts_as_tree
  has_and_belongs_to_many :photos

  def parent_id=(value)
    puts "-----> This is never called"
    write_attribute(:parent_id, value)
  end

  def parent_id
    puts "------> This is called as suspected"
    read_attribute(:parent_id)
  end
end

我是ruby和rails的新手,我很困惑那些需要花费数小时才能完成简单事情的事情......

提前致谢...

1 个答案:

答案 0 :(得分:2)

根据acts_as_tree的{​​{3}},尝试覆盖parent=,我认为ActiveRecord创建的魔术方法使用提供给belongs_to的符号。无论如何,我不知道你的用例,但考虑使用source而不是覆盖ActiveRecord方法。