Rails: Active Record не позволяет мне использовать мою модель в контроллере: - PullRequest
0 голосов
/ 26 февраля 2020

Я только начал создавать новое приложение с нуля и вызывал модель Pocket с этого контроллера:

class HomeController < ApplicationController  
  def index
  end

  def wallets_index
  end

  def wallets_show
  end

  def wallets_new
    @pocket = Pocket.new
  end
end

, и появилась эта странная ошибка:

транзакция определена по активной записи. Убедитесь, что у вас нет атрибута или метода с тем же именем.

моя схема:

  create_table "pockets", force: :cascade do |t|
    t.string "address"
    t.bigint "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "transaction"
    t.index ["user_id"], name: "index_pockets_on_user_id"
  end

  create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

  add_foreign_key "pockets", "users"

и модель кармана:

class Pocket < ApplicationRecord
  belongs_to :user
end

Это фактически первый раз, когда со мной произошло, и я понятия не имею, какой атрибут мне следует переименовать, чтобы избежать конфликтов?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вы используете столбец transaction в вашей Pocket модели

t.integer "transaction"

. Я бы не рекомендовал использовать столбец, имя которого похоже на метод rails. Метод transaction определен в transcations.rb модуле Rails

Но, если вы действительно хотите его использовать, вы можете проверить safe_attributes gem .

1 голос
/ 26 февраля 2020

В вашей таблице pockets или миграции
transaction является зарезервированным словом, поэтому вы не можете использовать это слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...