ручное добавление целочисленного поля к рельсовому каркасу

Я новичок в рельсах ... Я сделал эшафот "Обзоры", но хочу добавить еще одно поле "рейтинги" в виде целого числа. Я сделал следующее:

добавлен t.integer :ratings в файл переноса..ran rake db:migrate

в папке спецификации: добавлено в views / app / edit, index, new, show

в app / views / app добавил его в файлы json

в app / controllers / app добавлен в функцию review_params

тем не менее, всякий раз, когда я пытаюсь сослаться (показывая обзор), я получаю

неопределенный метод "рейтинги" для #

Должно быть что-то еще, что мне нужно где-то добавить, чтобы оно стало частью моей платформы для обзоров. Я уже 5 часов пытаюсь разобраться, но все никак не получается. Когда я пытаюсь переделать каркас и запустить rake db: migrate, я получаю сообщение об ошибке, в котором говорится, что базы данных уже существуют, поэтому я хотел бы просто вручную добавить их к моей существующей, если это возможно, я просто не могу понять, как даже хотя я уже сделал это один раз для строки.

Любая помощь приветствуется, спасибо.


person parameter    schedule 16.03.2014    source источник


Ответы (3)


Чтобы добавить в модель целочисленное поле, вы можете сделать что-то вроде этого.

rails generate migration AddRatingToReviews rating:integer

Это должно обработать все за вас, создав новый файл миграции, подобный этому.

class AddRatingsToReviews < ActiveRecord::Migration
  def change
    add_column :reviews, :rating
  end
end

Затем вы можете запустить rake db: migrate, чтобы добавить столбец в свою модель обзора.

ПРИМЕЧАНИЕ. Перед тем, как сделать все это, удалите все внесенные вручную изменения. При необходимости используйте rake db: rollback, который откатит ваш последний rake db: migrate.

Рекомендация

Если вы новичок в рельсах и не понимаете MVC, я предлагаю не использовать строительные леса, потому что вам будет сложно понять, что они делают. Пройдите этот замечательный урок Майкла Хартла, чтобы по-настоящему быстро изучить рельсы. http://ruby.railstutorial.org/

* Потрясающая жемчужина *

Используйте гем-аннотацию для отображения атрибутов, содержащихся в вашей модели, непосредственно в файлах name_of_model.rb.

https://github.com/ctran/annotate_models

person Derrick Mar    schedule 16.03.2014
comment
будет ли он обрабатывать все, что есть в файлах представления и контроллере? или мне нужно будет вручную добавлять оценки к этим еще? - person parameter; 17.03.2014
comment
Я думаю, вы концептуально не понимаете, что такое модели. Взгляните здесь, http://stackoverflow.com/questions/1931335/what-is-mvc-in-ruby-on-rails. - person Derrick Mar; 17.03.2014
comment
Я понимаю концепцию MVC и следую этому руководству. Проблема, с которой я столкнулся, заключается не в переносе нового файла или поля, а в том, что в обзоре, похоже, действительно нет поля оценок, несмотря на то, что я вручную добавлял его в другие файлы, как я делал с другим полем, которое действительно работало. Ссылка на поле приводит к ошибке, в которой говорится, что метод не определен. - person parameter; 17.03.2014
comment
например, когда я пытаюсь создать новый обзор и у меня есть div для рейтингов, я получаю сообщение об ошибке, в котором говорится, что рейтинги - это неопределенный метод проверки. - person parameter; 17.03.2014
comment
что вы имеете в виду, добавляя его к другим файлам вручную? Вам не нужно этого делать. Просто используйте команду rails generate, как указано выше. Сделайте следующее: 1. Перейдите в консоль rails, набрав «rails c». 2. Просмотрите свой список атрибутов в вашей модели обзора, набрав «Review.attribute_names». Вы видите там свой атрибут? - person Derrick Mar; 17.03.2014

rails generate migration AddRatingsToReviews ratings:integer

потом

rake db:migrate
person PrivateUser    schedule 16.03.2014
comment
так это автоматически добавит необходимый код к файлам представления и контроллеру? а json? - person parameter; 17.03.2014

Если вы не внесли никаких серьезных изменений в созданный скаффолд.

Самый простой способ получить оценки по просмотрам:

  • Откатите изменения, которые вы перенесли

rake db: откат ВЕРСИЯ = номер_версии

Где заменить version_number на номер версии с префиксом в файле миграции.

Например: если имя файла миграции 20140314190622_create_reviews.rb, тогда команда должна быть

rake db:rollback VERSION=20140314190622
  • Уничтожьте эшафот Review

rails d scaffold Обзор

  • После этого снова сгенерируйте каркас с целочисленным полем

rails g scaffold Review ratings:integer .... ## Добавить другое поле вместо ....

person Kirti Thorat    schedule 16.03.2014