[英]Issue creating a car for a user in my rails app
我很新,还在学习。 我正在从事的项目是为一个用户设置许多汽车,而汽车属于一个用户。
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
但同样,我显然做错了,我无法在网上找到答案。
好吧,如果您有登录名,那么您可能已经设置了current_user
。 记录的一个。 在控制器上的 create 方法中,您可以使用登录用户设置汽车信息,例如:
def create
@car = Car.new(car_params)
@car.user_id = current_user.id
@car.save
redirect_to user_path
end
如果您有关于登录用户的信息,您还可以从car_params
删除:user_id
。
如果您没有current_user
或任何方法来创建登录用户,则需要通过 HTML select 或类似方式在表单内选择用户,然后您可以将:user_id
保留在car_params
中,然后删除关于在@car 上设置 user_id 以保存的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.