そもそも
Railsではカラム名「hash」を含むデータベースにアクセスしようとするとエラーになる。
hash is defined by ActiveRecord
つまりActiveRecord様がもう予約語として確保してしまったから無理!テメーがカラム名変えろよってエラー
対処1
さすがRails、すでにそれ専用のGemがある
インストールは safe_attributes
を加えるだけ、使うときは
class MyModel < ActiveRecord::Base bad_attribute_names :hash end
ってやるだけ。簡単じゃん
対処2
だが上記のGemには1つ欠点がある。全くメンテナンスされてない(平成28年10月24日現在4年以上更新されていない)
要はinstance_method_already_implemented
見てるだけだからそこハックすればよくね?って話
# hashが予約語なので回避 def self.instance_method_already_implemented?(method_name) return true if method_name == 'hash' super end
いやカラム名変えろって話ですよね、はい