0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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

はじめに

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

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?