Я пишу RESTful API в Rails, и когда я создаю объект Label и использую метод .save()
, метка должным образом сохраняется в базе данных, но вызов @label.id
возвращает ноль.
Оператор puts
проверяет, что все правильно, кроме поля id. Я также проверил, что база данных имеет правильные идентификаторы.
Также обратите внимание: это внутри URL-адреса вложенного ресурса: POST /members/:member_id/labels/
.
Кто-нибудь испытывал это раньше?
def create
if params[:member_id] and params[:title]
# Periods in a username will have been translated to underscores
member_id = params[:member_id].gsub('_', '.')
title = params[:title]
# @member = Member.find(member_id) # No longer in use
@label = Label.new(:username => member_id, :title => title)
if @label.save
puts " *** label: #{@label.inspect}"
@label.reload
respond_to do |format|
format.json { render :json => @label, :status => :created and return }
end
else
respond_with :status => 406, :errors => @label.errors and return
end
end
respond_with :status => 406, :errors => [ :message => "member_id and title parameters must be provided" ] and return
end
К сожалению, я не могу предоставить файл миграции в соответствии с запросом, так как я подключаюсь к существующей базе данных PostgreSQL, изначально просматриваемой через PHP. Однако ниже приведен оператор create table
вместе с тем, как выглядит select *
.
DROP TABLE student_labels;
CREATE TABLE student_labels (
id serial not null,
username text not null,
title text not null,
created_at timestamp not null default now(),
updated_at timestamp not null default now(),
deleted_at timestamp
);
development=> select * from student_labels;
id | username | title | created_at | updated_at | deleted_at
----+----------+--------------+----------------------------+----------------------------+------------
7 | F0003 | Boom | 2011-03-10 05:49:06.01771 | 2011-03-10 05:49:06.01771 |
8 | F0003 | Boom | 2011-03-10 05:49:28.659 | 2011-03-10 05:49:28.659 |
9 | F0003 | Boom | 2011-03-10 05:52:03.343815 | 2011-03-10 05:52:03.343815 |
10 | F0003 | Boom | 2011-03-10 05:53:07.803489 | 2011-03-10 05:53:07.803489 |