Ошибка Ruby on Rails «неопределенный метод»

#ruby-on-rails #heroku #undefined

#ruby-on-rails #heroku #не определено

Вопрос:

Я разрабатываю простое приложение для создания новостных статей. Он отлично работает в разработке. Я пытаюсь опубликовать в Heroku. Всякий раз, когда я пытаюсь перейти к «новому» пути, который приводит меня к форме для создания нового «сообщения», я получаю эту ошибку в своих журналах:

 ActionView::Template::Error (undefined method `level' for #<Post:0x007f624eca42e0>):
  

«уровень» — это столбец в моей таблице «сообщения», который я использую, чтобы отслеживать, будет ли данная статья отображаться на видном месте или нет. В процессе разработки это работает так, как и должно.
Не совсем уверен, что происходит. Я несколько раз пытался запустить rake db: migrate.

Вот полный журнал heroku:

 2016-10-21T22:16:02.717948 00:00 app[web.1]: D, [2016-10-21T22:16:02.717866 #3] DEBUG -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   User Load (1.4ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
 2016-10-21T22:16:02.719426 00:00 app[web.1]: I, [2016-10-21T22:16:02.719357 #3]  INFO -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   Rendering posts/new.html.erb within layouts/application
2016-10-21T22:16:02.728995 00:00 app[web.1]: I, [2016-10-21T22:16:02.728898 #3]  INFO -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   Rendered posts/_form.html.erb (9.2ms)
2016-10-21T22:16:02.729133 00:00 app[web.1]: I, [2016-10-21T22:16:02.729070 #3]  INFO -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   Rendered posts/new.html.erb within layouts/application (9.6ms)
2016-10-21T22:16:02.729427 00:00 app[web.1]: I, [2016-10-21T22:16:02.729362 #3]  INFO -- : [a4723811-33bd-4c11-b62f-7c3401f77048] Completed 500 Internal Server Error in 14ms (ActiveRecord: 1.4ms)
2016-10-21T22:16:02.730972 00:00 app[web.1]: F, [2016-10-21T22:16:02.730889 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   
2016-10-21T22:16:02.731067 00:00 app[web.1]: F, [2016-10-21T22:16:02.730980 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048] ActionView::Template::Error (undefined method `level' for #<Post:0x007f624eca42e0>):
2016-10-21T22:16:02.731308 00:00 app[web.1]: F, [2016-10-21T22:16:02.731223 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     11:     <%= f.input :description, class: 'form-control' %>
2016-10-21T22:16:02.731351 00:00 app[web.1]: F, [2016-10-21T22:16:02.731295 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     12:   </div>
2016-10-21T22:16:02.731420 00:00 app[web.1]: F, [2016-10-21T22:16:02.731356 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     13:    <div class="field">
2016-10-21T22:16:02.731476 00:00 app[web.1]: F, [2016-10-21T22:16:02.731421 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     14:     <%= f.input :level, class: 'form-control' %>
 2016-10-21T22:16:02.731528 00:00 app[web.1]: F, [2016-10-21T22:16:02.731477 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     15:   </div>
2016-10-21T22:16:02.731585 00:00 app[web.1]: F, [2016-10-21T22:16:02.731530 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     16:   <div class="actions">
2016-10-21T22:16:02.731652 00:00 app[web.1]: F, [2016-10-21T22:16:02.731585 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]     17:     <%= f.label :photo %> 
2016-10-21T22:16:02.731705 00:00 app[web.1]: F, [2016-10-21T22:16:02.731648 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048]   
2016-10-21T22:16:02.731774 00:00 app[web.1]: F, [2016-10-21T22:16:02.731726 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048] app/views/posts/_form.html.erb:14:in `block in_app_views_posts__form_html_erb___305077094715289752_70030112058800'
2016-10-21T22:16:02.731841 00:00 app[web.1]: F, [2016-10-21T22:16:02.731794 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048] app/views/posts/_form.html.erb:1:in `_app_views_posts__form_html_erb___305077094715289752_70030112058800'
 2016-10-21T22:16:02.731917 00:00 app[web.1]: F, [2016-10-21T22:16:02.731859 #3] FATAL -- : [a4723811-33bd-4c11-b62f-7c3401f77048] app/views/posts/new.html.erb:5:in `_app_views_posts_new_html_erb___2217823637252593740_70030112076460'
  

Вот мой posts_controller:

 class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, only: [:edit, :update, :destroy, :new, :create]

# GET /posts
# GET /posts.json
def index
@posts = Post.most_recent
end

# GET /posts/1
# GET /posts/1.json
def show
end

# GET /posts/new
def new
@post = Post.new
end

# GET /posts/1/edit
def edit
end

# POST /posts
# POST /posts.json
def create
  @post = Post.new(post_params)

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

# PATCH/PUT /posts/1
# PATCH/PUT /posts/1.json
def update
respond_to do |format|
  if @post.update(post_params)
    format.html { redirect_to @post, notice: 'Post was successfully updated.' }
    format.json { render :show, status: :ok, location: @post }
  else
    format.html { render :edit }
    format.json { render json: @post.errors, status: :unprocessable_entity }
  end
end
end

# DELETE /posts/1
# DELETE /posts/1.json
def destroy
@post.destroy
respond_to do |format|
  format.html { redirect_to posts_url, notice: 'Post was successfully destroyed.' }
  format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_post
  @post = Post.friendly.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def post_params
  params.require(:post).permit(:title, :content, :description, :photo, :level)
end
end
  

Вот моя форма, которая устраняет проблему (я использую драгоценный камень simple_form):

 <%= simple_form_for @post, :html => {:multipart => true} do |f| %>

 <%= f.error_notification %>
 <div class="field">
  <%= f.input :title, class: 'form-control' %>
 </div>
 <div class="field">
  <%= f.input :content, class: 'form-control' %>
 </div>
 <div class="field">
  <%= f.input :description, class: 'form-control' %>
 </div>
 <div class="field">
  <%= f.input :level, class: 'form-control' %>
 </div>
 <div class="actions">
  <%= f.label :photo %> 
 <%= f.file_field :photo %>
 <br />
 </div> 
 <div class="actions">
  <%= f.button :submit, :class => 'btn btn-success' %>
 </div> 
 <% end %>
  

К вашему сведению, я также использую paperclip. Кто-нибудь может увидеть, что здесь происходит? Я в тупике. Спасибо!

Комментарии:

1. Можете ли вы опубликовать схему posts таблицы?

2. > Post (идентификатор: целое число, созданное по дате-времени, обновленное по дате-времени, заголовок: строка, содержимое: строка, описание: строка, идентификатор пользователя: целое число, slug: строка, имя_файла_файла: строка, photo_content_type: строка, размер_файла_файла: целое число, photo_updated_at: дата-время, уровень: строка) Это то, что написано в консоли. «Уровень» есть, и он работал в разработке весь день.

3. Может быть глупо. Вы запускали heroku run rake db:migrate ?

4. Это был мой вопрос

5. можете ли вы опубликовать распечатку вашей модели post с рабочей консоли