私はカテゴリモデルを作成し、awesome_nested_set
プラグイン(acts_as_nested_set
の代わり)を使用して階層を処理しています。 awesome_nested_set
を使用すると、オブジェクトが作成され、保存され、セット内に配置されます。同様に、lft
,rgt
およびparent_id
はattr_protected
であるため、直接書き込むことはできません。ネストされたセット内のノード移動の妥当性確認
私はので、私は、ユーザーが(私はまだ考えていないこと以上があるかもしれない)に通知することをキャッチすることができるようにしたいセットにノードを配置するとき、私は二つの状況に実行しています:
- ノードが自身の子として配置しようとするノードは、自身の子孫の下に移動しようとする(
self.id == self.parent_id
) - (
self.descendants.include? self.parent_id == true
)
は、両方の場合において、移動は失敗するが、awesome_nested_set
う意志だけですiseはActiveRecord::ActiveRecordError
例外ですが、私はユーザーに与えることができるようにわかりやすいメッセージではありません。
awesome_nested_set
は(position
が:root
、:child
、:left
又は:right
とtarget
の一つである、すべてのposition
Sしかし:root
ための関連するノードである)すべてのコールmove_to(target, position)
ノード移動の多数の方法を有しています。このメソッドはbefore_move
コールバックを起動しますが、発生前に移動を検証する方法は提供していません。移動を検証するために、コールバックが受け取らないターゲットと位置にアクセスする必要があります。
は、誰もが(別の方法でのbefore_move
コールバックに目標と位置を渡す方法を持っていることによってのいずれか)awesome_nested_set
での動きを検証する方法、または私が検証できるようになる他のネストされたセットのプラグインのいずれかを知っていますか?私は自分のプラグインをフォークしたり書くことを好まない。