こんにちは。Railsを普段使いしていて、想定しない挙動をしたり/この挙動は不具合ではないかと疑うことがあるかと思います。 今回enum関連の不具合報告をしました。本記事では、バグレポートの書き方と実際に報告した不具合の内容を説明したいと思います。
バグレポートの書き方
バグレポートは、基本的に Rails Guide の Creating a Bug Report に沿って報告するのが良いです。 付け加えると、実際に再現するようなRailsアプリや再現コードがIssueに記載出来るとベストです。
私が実際に挙げたIssueはUse non-exist enum string to get unrelated record in My SQL となります。
Issueの内容
まず、以下のユーザーモデルが定義されていたとします。
class User < ActiveRecord::Base enum status: { active: 0, non_active: 1 } end
この時 User.find_by(status: :non_exist_status)
とコードを書くとステータスが active のデータが取れます。原因は SELECT * FROM users WHERE status = 'non_exist_status'
が発行されるのですが、文字列から数字への暗黙の変換がされてしまい SELECT * FROM users WHERE status = 0
と同じ意味になってしまうからです。
終わりに
バグ報告をまとめるのは、結構大変な行為かと思います。なので、無理せずに余裕がある時やモチベーションが高い時などに挑戦してみるのはいかがでしょうか?