LoginSignup
4
5

More than 5 years have passed since last update.

親ID(ancestryカラム)をnullで保存する方法

Posted at

大小カテゴリ等を実装する際にancestryというgemを使って、親と子を作成している方がいると思いますが、今回は親ID(ancestryカラム)をnullで保存する(新しいレコードを親とする)方法を記載します。

やり方

普通にancestryを空の状態で保存しようとすると、validateで怒られて保存出来ません。

しかしどうも空の値では保存できないが nil なら保存できるようなので、Modelに対して before_validation を行い、保存する値を変更しましょう。

Modelに以下を追記。

before_validation do
  self.ancestry = nil if self.ancestry.blank?
end

validationの前にancestryに空の値が入ってきた場合、無理矢理nilに変更しています。
このやり方なら親として保存できます。

パッと見、悪手な感じなので他に最善手を知っている方は是非お教え下さい!

参考: Why do I get undefined method `before_save' for false:FalseClass when using if on before save?

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5