gitlabのコード読んでいていいなと思ったやつ。
before_validation
で値が空のものに mark_for_destruction
でフラグ立ててやる。
これなら空のやつでもとりあえず save
しとけばいいので、before_validation
でやるのもいいなと思った。
- project.rb
before_validation :mark_remote_mirrors_for_removal, if: -> { RemoteMirror.table_exists? } ... def mark_remote_mirrors_for_removal remote_mirrors.each(&:mark_for_delete_if_blank_url) end
- remote_mirror.rb
def mark_for_delete_if_blank_url mark_for_destruction if url.blank? end
gitlabのコード読むのはいい勉強になる。