我只想覆盖属性“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的新手,我很困惑那些需要花费数小时才能完成简单事情的事情......
提前致谢...
答案 0 :(得分:2)
根据acts_as_tree
的{{3}},尝试覆盖parent=
,我认为ActiveRecord
创建的魔术方法使用提供给belongs_to
的符号。无论如何,我不知道你的用例,但考虑使用source而不是覆盖ActiveRecord
方法。