Я использую Devise для аутентификации. У меня есть две модели, в которых у пользователя есть один профиль, а профиль принадлежит пользователю:
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy
end
class Profile < ActiveRecord::Base
belongs_to :user
end
Я использую вложенные ресурсы, например.
resources :users do
resource :profile
end
Чтобы создать новый профиль пользователя, я использую префикс new_user_profile_path(current_user)
, который ведет к prifile#new
и т. д.
Чтобы обновить профиль пользователя, я делаю следующее
# e.g. users/123/profile
current_user.profile.update(profile_params)
Это кажется неправильным, потому что я не использую the user_id => 123
в профиле params
. Должен ли я находить профиль пользователя по user_id вместо этого, например.
@profile = Profile.find_by(user_id: params[:user_id])
@profile.update(profile_params)
Кроме того, пользователь не может редактировать профиль других пользователей.
Спасибо за ответ.