Method: Og::SqlStore#eval_og_delete
- Defined in:
- lib/og/store/sql.rb
#eval_og_delete(klass) ⇒ Object
Compiles the og_delete method for this class. This method is used to delete instances of this class.
950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 |
# File 'lib/og/store/sql.rb', line 950 def eval_og_delete klass klass.module_eval %{ def og_delete(store, cascade = true) #{insert_advices :pre, :og_delete, klass, :advices} if cascade transaction do |tx| tx.exec "DELETE FROM #{klass.table} WHERE #{pk_field klass}=\#{pk}" if descendants = #{klass}.ann.self[:descendants] descendants.each do |dclass, foreign_key| tx.exec "DELETE FROM \#{dclass::OGTABLE} WHERE \#{foreign_key}=\#{pk}" end end end else tx.exec "DELETE FROM #{klass.table} WHERE #{pk_field klass}=\#{pk}" end #{insert_advices :post, :og_delete, klass, :advices} end } end |