Как добавить значения по умолчанию для вложенных элементов в контроллере Rails? - PullRequest
0 голосов
/ 29 апреля 2020

В форме регистрации моего приложения на Rails 6 можно создать Account с вложенным User.

class AccountsController < ApplicationController

  def new
    @account = Account.new
    @account.users.build(
      :owner => true,
      :language => "FR"
    )
  end

  def create
    @account = Account.new(account_params)
    if @account.save
      redirect_to root_url, :notice => "Account created."
    else
      render :new
    end
  end

private

  def account_params
    safe_attributes = [
      :name,
      :users_attributes => [:first_name, :last_name, :email, :password, :owner, :language]
    ]
    params.require(:account).permit(*safe_attributes)
  end

end

Как лучше всего определить значения по умолчанию на новых user здесь?

Прямо сейчас я использую hidden_fields для значений по умолчанию в моей форме регистрации, таким образом делая их общедоступными. Это, конечно, не , что я хочу, потому что это очень небезопасно.

Есть ли лучший способ справиться с этим?

Я знаю, что есть Rails ' with_defaults , но я не смог заставить его работать с вложенными элементами .

1 Ответ

1 голос
/ 29 апреля 2020

попробуйте:

account_params[:users_attributes] = account_params[:users_attributes].with_defaults({ first_name: 'John', last_name: 'Smith'})

в первой строке действия создания

...