как дифференцироваться обысканный или созданный first_or_create

Я хочу дифференцироваться обысканный или созданный first_or_create.

record = MasterRecord.where(:name=>'test_data').firest_or_create

# and i want differentiate searched or created like this.
# but there is no created_record? method
if record.created_record?
    render :status=>200, :json => record.to_json
else
    render :status=>409, :json => record.to_json
end

как я делаю это?

3
добавлено
Просмотры: 2
nl ja de

2 ответы

Работа должна будет использовать first_or_initialize вместо этого first_or_create и затем используют new_record? следующим образом:

record = MasterRecord.where(:name=>'test_data').first_or_initialize

created_record = record.new_record?
record.save! if record.new_record?

if created_record
    render :status=>200, :json => record.to_json
else
    render :status=>409, :json => record.to_json
end
5
добавлено
Потрясающий спас мой день!
добавлено автор Abs, источник

Если отчет не может быть найден, возвращение будет [] , таким образом, можно играть с сигнал . Что-то вроде этого:

created = false
record = MasterRecord.where(:name=>'test_data').tap {|x| created = true if x.empty?}.first_or_create
if created
  ...
3
добавлено
сигнал
добавлено автор Yevgeniy Anfilofyev, источник
Я did' nt знают сигнал. Я искал сигнал, и я знаю it' s очень хороший. спасибо.
добавлено автор vikke, источник