рельсы: создать одну таблицу без идентификатора - PullRequest
0 голосов
/ 28 июля 2010

Я только что создал свой первый эшафот в рельсах. Теперь я не хочу, чтобы в моей таблице было поле с именем "id". Вместо этого я хочу, чтобы он был назван «uid», который будет произвольной строкой. Но я не могу понять, как это сделать. Особенно с управлением маршрутами. Мне удалось установить: id => false и определить «uid» в качестве первичного ключа, но контроллер не работает, потому что он все еще пытается искать по id. Как мне справиться с этим?

Кроме того, что-нибудь еще, что я не знаю об этом, могло бы взорваться?

И я знаю, что рельсы - это все о конвенциях, и все, и я не должен пытаться идти против "пути рельсов", но я действительно хочу, чтобы эта штука работала так.

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

В вашей миграции обновите ваш код следующим образом:

create_table :table_name, :primary_key => :uid do |t|
...
end

И ваша модель должна включать эту строку:

class ModelName < ActiveRecord::Base
  set_primary_key :uid
end

Все будет работать так же, как с обычным столбцом id.

Model.find найдет по uid, а не по id и т. Д. *

0 голосов
/ 28 июля 2010

убедитесь, что в вашем файле миграции есть:

create_table :table_name, :primary_key => :uid do |t|
...

затем вставьте в вашу модель:

self.primary_key = "uid"

и найдите свою запись, как говорит Джон Топли:

@record = Model.find('foo')

Это должно работать

0 голосов
/ 28 июля 2010

Вы сможете найти записи, выполнив:

@record = Model.find('foo')

или

@record = Model.find_by_uid('foo')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...