Моя регистрационная форма, которая является формой для модели Users, принимает строковое значение для компании. Однако я только что внес изменение, чтобы пользователи принадлежали компаниям. Поэтому мне нужно передать объект Company в модель Users.
Я хочу использовать строковое значение из формы для получения объекта Company:
@user.company = Company.find_by_name(params[:company])
Я считаю, что это работает, однако форма передает: company (которая является строкой) в модель, когда я вызываю:
@user = User.new(params[:user])
Поэтому я хочу знать (и не могу найти, как) удалить параметр: company, прежде чем передавать его модели User.
источник
model_params.delete :key_name
не работаю - не знаете почему?assin_params = params.dup.delete(:company)
. никогда не удаляйте напрямую из paramsassign_params = params.dup; assign_params.delete(:company)
model_params
была функцией, которая вытащила соответствующие параметры изparams
. Итак, когда выdelete
из,model_params
вы действительно просто удаляете из хэша, которыйmodel_params
возвращается.Вероятно, вам следует использовать hash.except
Он выполняет 2 вещи: позволяет исключать более 1 ключа за раз и не изменяет исходный хэш.
источник
"-1"
ключ? {"utf8" => "✓", "_method" => "patch", "Authentity_token" => "VtY ...", "brochure" => {"title" => "Hello world", "profilings_attributes" => {"-1" => {"member_profile_id" => "3"}, "0" => {"percent" => "10.0", "description" => "Немного описания!", "_Destroy" = > "false", "id" => "10"}, "1" => {...}}, "спонсорские_атрибуты" => {"-1" => {"спонсор_id" => "2"}, "0" => { "brochure_id" =>»Правильный способ добиться этого - использовать
strong_params
Таким образом, у вас будет больше контроля над тем, какие параметры следует передавать в модель.
источник
это удалит параметры из URL-адреса
источник
Чтобы можно было удалить, вы можете сделать памятку :
Теперь вы можете:
источник