Я знаю, что подобные вопросы были заданы по этой теме, и я прочитал их все и не смог найти четкое решение. Прежде чем я изложу свою проблему, я отправлю все необходимые коды.Метод Create в контроллере комментариев не работает. Rails
Модели:
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :scoreboard
end
class User < ActiveRecord::Base
has_many :scoreboards, dependent: :destroy
has_many :comments, dependent: :destroy
end
class Scoreboard < ActiveRecord::Base
belongs_to :user
has_many :teams, dependent: :destroy
has_many :comments, dependent: :destroy
end
Счет похож на страницу статьи, где пользователи могут оставлять комментарии.
Миграции для Комментариев:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.text :body
t.text :reply
t.references :user, index: true
t.references :scoreboard, index: true
t.timestamps null: false
end
add_foreign_key :comments, :users
add_foreign_key :comments, :scoreboards
end
end
Проблемы заключается с создать метод в контроллере комментариев. Вот код для метода:
def create
@scoreboard = Scoreboard.find(params[:scoreboard_id])
@comment.user_id = current_user.id
@comment = @scoreboard.comments.build(comment_params)
redirect_to scoreboard_url(@comment.scoreboard_id)
end
Метод current_user расположен в хелперах файл в отдельной папке. Всякий раз, когда я представляю форму для нового комментария, я получаю следующее сообщение об ошибке:
undefined method `user_id=' for nil:NilClass
Один из вопросов стека заявил, что столбец user_id требуется в комментариях, и когда я попытался мигрировать сказал он дублируется столбец не может быть создан. Может ли это, потому что есть внешний ключ для пользователей, уже присутствующих в миграции? Что я могу делать неправильно?
Wow haha. Спасибо. – kpaul
Это, если ваш другой код в порядке. –
Проблема была именно в том, что вы сказали. Теперь это исправлено. Спасибо! – kpaul