2016-01-25 2 views
-2

При определении действия create в контроллере в чем разница между использованием этих двух методов.Рельсы - используя методы .new() vs .create() при определении действия create

def create 
    @item = Item.new(name: item_params[:name]) 
    @item.save 
end 

против

def create 
    @item = Item.create(name: item_params[:name]) 
end 

Является ли один лучше другого?

+1

@danielrsmith Ваш жизнь была бы проще, если бы вы голосовали за закрытие вместо добавления комментария к руководству. И вопрос действительно может быть отмечен как дубликат ... –

+1

@HolgerJust Я сделал, SO добавил комментарий автоматически. – danielrsmith

+0

На самом деле @HolgerПросто, голосуйте, чтобы закрыть на 3000 пунктов, я не знаю. – danielrsmith

ответ

-1

Новый экземпляр объекта в памяти. Создать сохраняется в БД.

Предположим, вы создаете новую запись, когда вы загружаете форму, вы записываете эту запись в память new. Затем, когда вы заполните форму, вы загрузите ее и сохраните ее в БД.

2

Новый метод вернет новый объект, а create вернет объект и сохранит его в базе данных. Используя новый метод, объект может быть создан без сохранения. От Active Record Basics

-1

если вам нужно просто создать использование объекта:

def create 
    @item = Item.create(name: item_params[:name]) 
end 

он меньше и более удобным для чтения, но

, если у вас есть условие в использовании действия первого:

def create 
    @item = Item.new(name: item_params[:name]) 
    if @item.save 
    redirect_to ... 
    else 
    render:new 
    end 
end 
Смежные вопросы