こんにちは。たなかです。
Ruby on RailsでWebアプリケーションサービスの開発をしています。
今回もFatFreeCRMシリーズで、開発中以下のようなエラーに遭遇したので、内容と解決方法をご紹介します。
もくじ
症状
NoMethodError (super: no superclass method `access=’ for #)
Completed 500 Internal Server Error in 61ms (ActiveRecord: 5.1ms)
NoMethodError (super: no superclass method 'access=' for #):
lib/fat_free_crm/fields.rb:87:in `method_missing'
lib/fat_free_crm/permissions.rb:63:in `access='
lib/fat_free_crm/fields.rb:68:in `assign_attributes'
app/controllers/entities/xxxx_controller.rb:45:in `new'
‘access=’なんていうメソッドはないよーと仰っているように見えます。
インスタンスの新規作成を行いたいのですが、上記エラーで処理が止まってしまいます。
‘access=’でgrepしても見つかりませんし、上記以上の情報がなく、何で怒られてるか掴みにくい状況です。
流用した元機能を参考になぜエラーが出るのか調査することにしました。
解決方法
ability.rbに追記が必要
ability.rbは権限管理gem「cancancan」の設定ファイルで、Fat Free CRMではこのgemを利用してユーザーの操作権限を管理しています。
ability.rbのentities配列にに対象を追加してやる必要があります。
entities = [Account, Campaign, Contact, Lead, Opportunity, Xxxx(今回追加分)]
上記追記してやることでエラーを解消できました!よかったー!
まとめ
ということで今回もFat Free CRMの細かいエラーについての紹介でした。
たまたま別プロジェクトでcancancanに触れたことがあったので、運良く気づくことができましたが、ログの情報が少なめだったので原因がなかなか掴めずヒヤリとしましたね。
同じような症状でお悩みの方の参考になれば幸いです。