Как создать модель без первичного ключа в рельсах - PullRequest
8 голосов
/ 21 июня 2010

Я хочу создать модель 'Relation', которая расширяет ActiveRecord :: Base, установить ее имя таблицы как 'questions_tags' и без первичного ключа. Что мне делать?

class Relation < ActiveRecord::Base
  set_table_name 'questions_tags' # set table name, right?

  # how to define 'no-pk'?

end

UPDATE


Привет, ребята. Я знаю, использование 'create_table' может решить эту проблему, но это как раз то, что я хочу знать: что за магия стоит за create_table(:id=>false)? Как я могу получить тот же эффект без использования create_table(:id=>false)?

Ответы [ 3 ]

11 голосов
/ 21 июня 2010

Создайте миграцию, которая выглядит следующим образом:

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
2 голосов
/ 21 июня 2010

Если вы хотите создать сводную таблицу, как это выглядит из имени таблицы, то AR справится с этим в фоновом режиме.

Однако, если вы хотите создать таблицу стогда еще: 1) переименуйте вашу таблицу в "realtions", пожалуйста 2) используйте первичный ключ "id"

Нет веской причины не использовать первичный ключ в таблице, и очень вероятно, чтовы могли бы потом пожалеть об этом.

0 голосов
/ 21 июня 2010

Почему вам не нужен ПК?

Active Record ожидает ПК, и я не понимаю, какой вред это может принести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...