В соответствии с документацией о модели пользователя
app / models / guitar.rb
class Guitar < ApplicationRecord
belongs_to :user
end
app / models / user.rb
class User < ApplicationRecord
has_many :guitars
end
в рельсах5 принадлежит_ к связи, требуемой по умолчанию , что означает, что во время создания каждой записи guitar
user_id
требуется.
Таким образом, здесь, на контроллере, вы можете решить это: -
В devise после sign_in есть вспомогательный метод, который current_user
, который является текущим пользователем logged_in
в guitars_controller.rb
def create
new_guitar_record = current_user.guitars.new(guitar_params)
if new_guitar_record.save
#guitar created successfully for current logged in user
else
#current_user.guitar.errors.full_messages
end
end
def guitar_params
params.require(:guitar).permit(:name, :description)
end
Пожалуйста, измените controllers/application_controller
как выиспортили devise current_user и ваш текущий current_user
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
Примечание: - Вы также можете передать current_user.id
на hidden_field :user_id
с гитарной формой, но по соображениям безопасности это нехорошо, так как пользователь может вызвать любой user_id
через браузер.