У меня есть вложенный ресурс в моем routes.rbОбновление действия для вложенного ресурса в Rails
# routes.rb
resources :users do
resource :preferences, :only => [:create,:show,:update,:destroy]
end
Теперь обновить предпочтения пользователя, я использую
preferences = Preference.where(:user_id => user_id).update_all(preferences_request)
render json: preferences, status: 200
Но я чувствую не рекомендуется использовать update_all
, поскольку каждый пользователь имеет только одно предпочтение. А также я не могу использовать render :json => preferences
, так как preferences
будет иметь значение 1
вместо фактического хеш-объекта со всеми атрибутами таблицы. Каков наилучший способ обновления предпочтений?
'Preference.where (user_id: user_id) .take' может быть заменен на' Preference.find_by! (User_id: user_id) 'для краткости. :-) – Drenmi
Это имеет смысл, я обновил ответ @Drenmi. Благодарю. –