5
4

More than 3 years have passed since last update.

[Rails] undefined method `' はself.メソッド名で解決する時がある。

Last updated at Posted at 2019-12-04

エラー内容

RailsでModelに定義したメソッドがControllerで呼び出すと、"undefined method `メソッド名'"になるエラー。(ControllerとModelで同じメソッド名を定義している場合)

解決方法

モデルのメソッド名の前に "self." を付けたらエラー解消され、
コントローラーで呼び出せた!!
要は、以下のようにクラスメソッドになり使える範囲広がる的な。
selfなし → インスタンスメソッド
selfあり → クラスメソッド

models/モデル名.rb
def self.メソッド名
end

コード詳細

controllerもmodelも両方、"import_csv"という名前で定義したため、エラーが発生した可能性あり。(追加検証は省略)
modelで定義したメソッドに"self."をつけることでエラー解消。

controllers/import.rb
#コントローラー
class ImportController < ApplicationController
 def import_csv   
   if Information.import_csv(params[:csv_file])
     xxxx
   end
 end
end
models/information.rb
#モデル
class Information < ApplicationRecord
 def self.import_csv(csv_file)
   xxxx
 end
end
あとがき

self.の効果はplz google!

参考

https://teratail.com/questions/102215
https://qiita.com/suzuki-koya/items/1553c405beeb73f83bbc

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4