Объясняет, почему модель new().save не работает при создании действия

В Model-1 эшафот создать действие,

 def create
  @auclub = Auclub.new(auclub_params)
  user = User.find(current_user.id)
  respond_to do |format|
    if @auclub.save && user.update(auclub_id: @auclub.id)
      format.html { redirect_to @auclub, notice: 'Auclub was successfully created.' }
      format.json { render :show, status: :created, location: @auclub }
    else
       //some codes
    end
  end
end

и я хочу создать клуб с пользователем

этот код работает, но если я использую, как это

user = User.find(current_user.id)
user.new(auclub_id : @auclub.id)
user.save

это не работает! Есть ли разница между обновлением и новым. сохранить?

2 ответа

Пытаться:

  @auclub = Auclub.new(auclub_params)
  @user = User.find(current_user.id)
  @auclub.save
  @user.auclub_id = @auclub.id
  @user.save

Узнайте больше док-станция APi

Вы делаете вещи неправильно.

Без модели и других кодов могу предложить сделать так:

user = User.find(current_user.id)
user.auclub_id = @auclub.id
user.save

И я думаю, что нет new метод, доступный для экземпляра ActiveRecord, например user в твоем случае.

new используется в классе ActiveRecord для создания нового экземпляра, такого как:

user = User.new

И я не думаю, что есть большая разница между использованием update метод и вручную переназначить атрибут и сохранить объект, используя save метод, но вы должны следить за производительностью, принципом DRY и обратными вызовами, определенными в модели.

Другие вопросы по тегам