Проблема создания автомобиля для пользователя в моем приложении rails - PullRequest
1 голос
/ 03 марта 2020

Я очень новичок и все еще учусь. Мой проект, над которым я работаю, настроен на то, чтобы пользователь имел много машин, а машины принадлежат пользователю.

class User < ApplicationRecord
    validates :name, presence: true, uniqueness: true
    has_secure_password 
    has_many :cars

end

class Car < ApplicationRecord
  belongs_to :user
end

Мой поток настроен так, чтобы после входа в систему пользователь мог создать свое транспортное средство. Однако у меня возникают проблемы при создании машины, чтобы она прикреплялась к пользователю, и я получаю сообщение об ошибке каждый раз, когда пробую разные методы.

 def create
        @car = Car.new(car_params)
        @user = User.find(params[:id])
        @car.save
        redirect_to user_path
    end


 private
    def car_params
        params.require(:car).permit(:user_id, :make, :model, :color)
    end

Кажется, моя схема настроена правильно

create_table "cars", force: :cascade do |t|
    t.string "make"
    t.string "model"
    t.string "color"
    t.integer "user_id", null: false
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["user_id"], name: "index_cars_on_user_id"
  end

Но, опять же, я явно делаю что-то не так и у меня возникают проблемы с поиском ответов в Интернете.

1 Ответ

1 голос
/ 03 марта 2020

Ну, если у вас есть логин, вы, вероятно, настроили current_user. Зарегистрированный. Внутри вашего метода создания на вашем контроллере вы можете установить информацию об автомобиле, используя зарегистрированного пользователя, например:

def create
  @car = Car.new(car_params)
  @car.user_id = current_user.id
  @car.save
  redirect_to user_path
end

Вы также можете удалить :user_id из car_params, если у вас есть информация о зарегистрированном пользователь.

Если у вас нет current_user или какого-либо другого метода для создания пользователя, вошедшего в систему, вам нужно будет выбрать пользователя внутри формы с помощью выбора HTML или чего-то подобного, затем вы можете сохранить :user_id внутри car_params и просто удалить строку о настройке user_id для @car для сохранения.

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