2016-09-06 2 views
0

Я подключаюсь к существующей базе данных, чтобы сделать несколько простых лесов для администрирования. Соглашение об именах, которое они использовали, - table_id. Поэтому мне нужно изменить первичный ключ по умолчанию с «id», например, на «customer_id». Я также надеюсь, что смогу использовать рельсовые леса с этим изменением, не переделывая все.Rails 4 - Переименовать первичный ключ

ответ

0

На самом деле вы не хотите этого делать.

Id являются для базы данных только в Rails вы можете использовать внешний ключ, и сказать что-то вроде

Costumer has_many: XXX и XXX belongs_to: Костюмер

что вы дать вам 1- n в базе данных, что означает, что XXX должен существовать потребитель.

Ответ на вопрос, почему вы не хотите изменять это, потому что ваша база данных не будет знать, как поступить после этого изменения (если возможно вообще), и как вы будете искать элемент на своем новом эшафоте без и ID? поскольку идентификатор является Costumer ID

если вы не знаете, как дать внешние ключи, click here

+0

Обновление записей не удастся, если нет столбца «id» для ссылки, верно? База данных, к которой я подключаюсь, имеет client_id как первичный ключ. Если я запускаю обновление или уничтожение рельсов, для id = 45 он не найдет запись. – Atari2600

+0

вы можете добавить collum в базу данных в качестве решения [проверьте его здесь] (http://guides.rubyonrails.org/active_record_migrations.html#highlighter_783751). чтобы ответить на этот вопрос, я не знаю, как работает база данных rails, но я бы не догадался, и я бы не советовал вам возиться с этим. , тогда у вас будет проблема поиска по ID, это было бы слишком грязно (если это возможно). вы можете вообразить? * something * find_by (id = costumer_id), если вы покупаете что-то другое, а не ваши заказчики? используя тот же идентификатор для 2 таблиц, которые представляют разные вещи .. hmm .. kinda messy –

+0

пример .. позволяет сказать, что для каждого клиента у вас есть продукты .. как бы вы получили доступ к продуктам id? products.costumer_id? почему бы не использовать этот costumer_id как ключ для ключей ?. как бы вы сохранили эти продукты? и порядок? или искать специфику? costumer_id будет не в идеальном порядке на вашей таблице продуктов. Это означает, что на вашем продукте один будет (например) costumer_id 3, тогда на вас второй продукт будет costumer_id 1 .. поэтому ваша таблица будет не в закажите его, чтобы найти по id вы можете себе представить, если у вас есть 1000 продуктов? и идентификатор не от 1 до 1000? –

Смежные вопросы