Undefined method `aasm_state' for model Order Did you mean? aasm_state=

426 Views Asked by At

Rspec-rails tests started to fail after adding Aasm gem. All basic set ups are done. Migration with adding aasm_state column. Adding state to the Order model.

Test log:

Searching book Visitor searches books by title
 Failure/Error: order = Order.create

 ActionView::Template::Error:
   undefined method `aasm_state' for #<Order:0x0000000008e48740>
   Did you mean?  aasm_state=

However there are no Order in the test:

require 'spec_helper'
require 'rails_helper'

feature 'Searching book' do

  before do
    book = Book.create title: "Geralt"
    author = Author.create full_name: "Swiss"
    category = Category.create title: "Programming"
    category.books << book
    book.authors << author
    author.books << book
    visit books_path
  end

  scenario 'Visitor searches books by title' do
    fill_in 'search', with: "Geralt"
    click_button('Search')
    expect(page).to have_content 'Geralt'
  end

end

Maybe issue is in application controller helper method:

class ApplicationController < ActionController::Base
  helper_method :current_order
  protect_from_forgery with: :exception

  def current_order
    if session[:order_id].nil?
      order = Order.create
      session[:order_id] = order.id
      order
    else
      Order.find(session[:order_id])
    end
  end

end

Order.rb with aasm, part:

  include AASM
  aasm do
    state :in_progress, initial: true
    state :processing
    state :in_delivery
    state :delivered
    state :canceled
  end

Template:

= form_tag books_path, method: :get do
  .form-group.col-sm-2
    = text_field_tag :search, params[:search], class: "form-control", id: "search",placeholder: "Search book"
  = submit_tag "Search", class: "btn btn-primary"

= render @books

= "Items in cart #{current_order.order_items.count}"
0

There are 0 best solutions below