こんにちは、SHOYANです。
Railsには様々な予約語がありますが、歴史の長いシステムを扱っているとDBのカラムがその予約語に該当する場合があります。
例えば classというカラム名があった場合、そのカラムの影響で以下のエラーが発生します。
1 2 | |
これを回避する方法の1つがDBのカラム名の変更です。
しかし、DBのカラム名の変更は様々な影響が考えられるため簡単に変更できない場合があります。
その場合はアプリケーション側で回避します。
Rails5のignored_columnsで予約語のエラーを回避する
Rails5で追加された ignored_columns を使えばこのカラム自体が無視されるようになり、エラーを回避できます。
1 2 3 | |
Rails4であれば以下で同様のことができるようです。
1 2 3 4 5 6 7 | |
ignored_columnsで防げないパターン
ただし、ignored_columns でも完全に防げない場合があります。
to_json メソッドでエラーが発生します。
1 2 | |
この場合は、except オプションで回避できます。
1
| |
今回の場合は、classカラム自体が不要だったので ignore_columns で対応しました。
classを使いたい場合は、どのように回避すればいいんでしょうか。。。
どなたか知っている人がいれば情報をいただきたいです。