Я хочу создать модель 'Relation', которая расширяет ActiveRecord:: Основа, набор это - имя таблицы как 'questions_tags', и без первичного ключа. What should I do?
class Relation < ActiveRecord::Base
set_table_name 'questions_tags' # set table name, right?
# how to define 'no-pk'?
end
ОБНОВЛЕНИЕ
Привет, парни. Я знаю, что использование 'create_table' может решить эту проблему, но это, что я хочу знать: Каково волшебство позади create_table(:id=>false)
? Как я могу получить тот же эффект без использования create_table(:id=>false)
?
Создайте миграцию, которая выглядит следующим образом:
class CreateQuestionsTags < ActiveRecord::Migration
def self.up
create_table :questions_tags, {:id => false, :force => true} do |t|
...
t.timestamps
end
end
def self.down
drop_table :questions_tags
end
end
Если вы хотите создать сводную таблицу, как это выглядит из имени таблицы, AR обработает это в фоновом режиме.
Однако, если вы хотите создать таблицу с большим количеством фейдов, тогда: 1) переименуйте вашу таблицу в "realtions" пожалуйста 2) используйте первичный ключ «id»
. Нет веской причины не использовать первичный ключ в таблице, и очень вероятно, что вы можете позже пожалеть об этом.
Почему вам не нужен ПК?
Active Record ожидает ПК, и я не вижу, какой вред он может нанести.