Railsアプリにて、管理者としてログインしようとしたところActiveRecord::StatementInvalidというエラーが出てしまう。
解決したいこと
Ruby on Rails5の教材を参考にしながら、タスク管理アプリケーションの作成をしています。
管理者のログイン機能、投稿機能等を一通り実装後、db/seed.rbに初期管理者情報を設定し、管理者第一号としてログインを試みたところ、以下のようなエラーが発生してしまいました。
解決方法を教えていただけると幸いです。
発生している問題・エラー
該当するソースコード
app/view/tasks/index.html.slim
tbody
- @tasks.each do |task|
tr
td= link_to task.name, task
td= task.created_at
td
= link_to '編集', edit_task_path(task), class: 'btn btn-primary mr-3'
= link_to '削除', task, method: :delete, data: { confirm: "タスク「#{task.name}」を削除します。よろしいですか?" }, class: 'btn btn-danger'
app/controllers/tasks_controller.rb
def index
@tasks = current_user.tasks.order(created: :desc)
end
db/migrate/create_tasks.rb
class CreateTasks < ActiveRecord::Migration[6.0]
def change
create_table :tasks do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
db/migrate/add_user_id_to_tasks.rb
class AddUserIdToTasks < ActiveRecord::Migration[6.0]
def up
execute 'DELETE FROM tasks;'
add_reference :tasks, :user, null: false, index: true
end
def down
remove_reference :tasks, :user, index: true
end
end
app/models/tasks.rb
class Task < ApplicationRecord
validates :name, presence: true
validates :name, length: { maximum: 30 }
validate :validate_name_not_including_comma
belongs_to :user
scope :recent, -> { order(created_at: :desc) }
private
def validate_name_not_including_comma
errors.add(:name, 'にカンマを含めることはできません') if name&.include?(',')
end
end
自分で試したこと
migrate実行後にmigraitionファイルを、編集したのかと思い、db:migrate:resetを実行してから、再度migrateを実行しましたが、うまくいきませんでした。
0 likes