はじめに
Railsアプリケーション開発中にbooleanのカラムに対してこんなコードに遭遇した.
db/migrate/create_post.rb
class Posts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.string name
t.boolean draft, comment: '下書き'
end
end
end
post.rb
// 下書きがどうかを判定するメソッド
def draft?
draft == 1
end
マジックナンバーは使用しない
まず大前提としてマジックナンバーの使用は避けた方が良い。保守性に影響がでてしまう。
もしメソッドとして書くのであればこっちの方が良いのではないか
def draft?
draft == true
end
booleanの判定は、メソッドとして定義しなくても使える
これがこの記事で一番伝えておきたかったこと。
boolean
で定義されたカラムは、デフォルトで真偽判定をメソッドのようにして行える
どういうことかというと・・・
わざわざメソッドを定義しなくてもデフォルトで↓が使える
post.rb
post.draft?
=> true
その理由
参考となる部分を発見👀
さらに調べてみるとActiveModel
で定義されているらしい
せっかくなので、booleanについて他に色々調べてみた
■ booleanを使用するときの注意点
■ booleanの 「いとをかし」 な話
参考