1

値が設定されているときに、属性「parent_id」のセッターをオーバーライドして、他のことをしたかっただけです。

しかし、セッターは呼び出されません。(値は疑わしいものとして取得できるため、明らかに別の方法でレールによって設定されています)

私の目標を達成する方法は?

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

私はルビーとレールに不慣れで、単純なことを完了するのに何時間もかかることにかなり混乱しています...

前もって感謝します...

4

1 に答える 1

2

のソースによると、代わりにacts_as_treeオーバーライドしてみてください。とにかく、あなたのユースケースはわかりませんが、メソッドをオーバーライドする代わりにActive Record のフィルター メソッドを使用することを考えてください。parent=ActiveRecordbelongs_toActiveRecord

于 2012-04-16T10:22:54.543 に答える