SYS_GUID
возвращает GUID - глобально уникальный идентификатор. SYS_GUID
является RAW(16)
. Он не генерирует увеличивающееся числовое значение.
Если вы хотите создать увеличивающийся цифровой ключ, вам нужно будет создать последовательность.
CREATE SEQUENCE name_of_sequence
START WITH 1
INCREMENT BY 1
CACHE 100;
Затем вы должны либо использовать эту последовательность в своем выражении INSERT
INSERT INTO name_of_table( primary_key_column, <> )
VALUES( name_of_sequence.nextval, <> );
Или вы можете определить триггер, который автоматически заполняет значение первичного ключа, используя последовательность
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
SELECT name_of_sequence.nextval
INTO :new.primary_key_column
FROM dual;
END;
Если вы используете Oracle 11.1 или новее, вы можете немного упростить триггер
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
:new.primary_key_column := name_of_sequence.nextval;
END;
Если вы действительно хотите использовать SYS_GUID
CREATE TABLE table_name (
primary_key_column raw(16) default sys_guid() primary key,
<>
)
По умолчанию rspec-rails взламывает Rails, чтобы предотвратить фактическую визуализацию шаблонов представлений. Вам следует проверять только поведение ваших действий и фильтровать тесты вашего контроллера, а не результат рендеринга шаблона - для этого нужны спецификации представления.
Однако, если вы хотите, чтобы спецификации вашего контроллера отображали шаблоны, как обычно это делает приложение, используйте директиву render_views
:
describe YourController do
render_views
...
end