途中から attr_encrypted を導入したら配列アクセス演算子でアクセスできなくて困った。
最近はドット演算子で attribute を参照する統一をしているので問題ないのですが、初期に書いたのは配列アクセス演算子 [] を結構使っていて難儀しました。
もともとはworker[:name]
つう感じで生で扱われてました。
attr_encrypted :name, key: 'a secret key', attribute: 'name_encrypted'
これだけだとこうなる
pry(main)> worker.name => "お名前" pry(main)> worker[:name] => nil
のでこんな感じのを加えて難をしのぎました。
def [](index) case index when :name, 'name' self.name else super end end def []=(index, val) case index when :name, 'name' self.name = val else super end end
そういや find_by
したいとき用に find_by_name
は用意してくれたんだけど find_all_by_name
なかったんで where(name_encryped: encrypt_name('探したい名前'))
でどうにかこうにか。