Объясняет, почему модель 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 и обратными вызовами, определенными в модели.