3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】booleanは実質メソッド!?と感じたこと

Last updated at Posted at 2022-04-15

はじめに

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の 「いとをかし」 な話

参考

3
1
1

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?