今年の目標の1月1個のやつ。今日は2月29日なのでセーフである。
作ったもの
en30/activerecord-destroy_as_you_like
has_manyしてるものを削除したときに、関連先をdestroy_allするかdelete_allするかを適当に選んでくれるものを作ろうとした。
class Parent
has_many :children, dependent: :destroy_as_you_like
end
とすると、Parent#destroy
をした時に、子にdestroy周りのコールバックが
ある場合は destroy_all
ない場合は delete_all(:delete_all)
する。
急拵えすぎて条件が結構怪しい&壊れている場合大惨事が起こりかねないのでRubyGemsには公開していない。とりあえずどうでもいいもので使ってみようかと思う。
所感
- destroyかdeleteするので名前はdestroyとdeleteを内包するようなものが良かったけど思いつかなかった
- ActiveRecord周りはRailsのバージョンアップごとに結構変わるようなので、どこの挙動を変えるべきかという選択は結構大事そうだった(適当に選んだ)。
- ActiveRecordのassociation周り設計をざっくりと理解したい。まとめられたら3月にブログにすると思う。
最近gem等のコードを読むことに抵抗が無くなってきて世界が少し広がった感じがする。楽しい。
にもあったのだけれど、
何かを作ろうと思うと、他の人がそれをどう実現してるかを見ることになって勉強になってヨイ。