0

I'm trying to call a method I defined in registration_insert.rb from my controller but I keep getting the following error:

undefined method `insert' for RegistrationInsert:Class

How do I correctly call the insert method?

File Structure (all under /app)

-controllers

---------registrations_controller.rb

-registrations

---------registration_insert.rb

registrations_controller.rb:

 def create
    @registration = Registration.new(registration_params)
    RegistrationInsert.insert(registration_params)


    respond_to do |format|
      if @registration.save
        format.html { redirect_to @registration, notice: 'Registration was successfully created.' }
        format.json { render :show, status: :created, location: @registration }
      else
        format.html { render :new }
        format.json { render json: @registration.errors, status: :unprocessable_entity }
      end
    end
  end

registration_insert.rb

module RegistrationInsert 
    def insert(registration)
        #method code
    end
end

Edit: Changed class to module and it gives me this error:

undefined method `insert' for RegistrationInsert:Module

Alex Antonov
  • 14,134
  • 7
  • 65
  • 142
Andrew
  • 3,501
  • 8
  • 35
  • 54

1 Answers1

0

Maybe you need just RegistrationInsert.new.insert?

P.S. Please consider to make RegistrationInsert a class, not module. Classes are better for service objects realization.

P.P.S. If you want RegistrationInsert.new, then add self. before the method:

module RegistrationInsert 
  def self.insert(registration)
    #method code
  end
end
Alex Antonov
  • 14,134
  • 7
  • 65
  • 142