2012-01-28 1 views
0

Я создал модель, которая имеет строку как уникальный идентификатор. Я создал миграцию, чтобы добавить индекс в эту строку и установить ее как уникальную. Как я могу получить доступ к записи в базе данных, просто передавая свой уникальный идентификатор строки в методе находят, напримерRails: Как использовать метод find для произвольного индекса

@object = Object.find(params[:unique_id]) 

На данный момент, все, что я получаю исключение ActiveRecord :: RecordNotFound ...

Couldn't find Object with id=abc

... когда я пытаюсь получить доступ к Object.find('abc')

where метод не является альтернативой, поскольку это дает мне обратно отношение.

ответ

1

Object.find(:unique_id) поиск по столбцу 'object_id'; Если вы хотите выполнить поиск в другом столбце, используйте Object.find_by_[column_name]!(:unique_id). Это вызовет исключение, если запись не может быть найдена, как и метод find.

+0

Это дает мне следующие 'IRB (основные): 006: 0> Object.find_by_unique_id unique_id: (: unique_id => 'ABC') ArgumentError: Неизвестный ключ: unique_id' Моя миграция является' add_index: объекты, , unique: true' Когда я использую где, он работает – Isabaellchen

+0

try 'Object.find_by_unique_id! ('abc')' – Baldrick

+0

Ну, спасибо, кучка. Теперь он работает – Isabaellchen