モデルでbegin()とかやってはいけない気がする。 Overloadableを継承してるので、メソッドが定義されていない場合は call__()がコールされる。 ベヘイビアとか登録してたらそっちが呼ばれるけど、通常は使わないと思うので データソースのquery()が呼ばれる。 query()内では、メソッドをテンプレートとして引数をバインドしてSQLとして呼ぶと思うので、 begin()とかやると、"BEGIN"というSQLがコールされる。 PostgreSQLだとまさにこれはトランザクション開始のコマンドなので 動作してるように見えると思われる。 でもね。データソースにはちゃんと begin() commit() rollback() っていうメソッドがあるからこっちを使うはず。 モデルのsaveAll()内でもそうしてる。 ということで、モデルにメソッドがないのが困ったけど、以下で解