Как я могу добавить столбец для ссылки на другую таблицу в RoR? - PullRequest
0 голосов
/ 11 июля 2010

Вот заказчик:

   class CreateCustomer < ActiveRecord::Migration

      def self.up 
        create_table :customers do |t|
          t.column :email,        :string, :null => false

        end
      end

      def self.down 
        drop_table :customers
      end
    end

А это информация для клиента:

class CustomerInfo < ActiveRecord::Migration

  def self.up 
    create_table :statuses do |t|
      t.column :statuses,        :string, :null => false

    end
  end

  def self.down 
    drop_table :status
  end
end

То, что я хотел бы сделать, - это то, что клиент и информация о клиенте имеют отношения один к одному. Как я могу сделать это в новой миграции? спасибо.

Ответы [ 2 ]

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

Вы можете попробовать следующее в следующей миграции

add_column: customer_infos,: customer_id,: integer,: reference => "Customers",: null =>: true

Затем вы можете добавить has_one / own_to в Customer и Cusomer_infos.

Вы также можете выполнить инструкцию SQL.

Statement = "ALTER TABLE ID изменения пользователя SMALLINT (5) UNSIGNED NOT NULL AUTO_INCREMENT" ActiveRecord :: Base.connection.execute (инструкция)

вы можете ввести вручную в вашей миграции

Обратите внимание, что это всего лишь пример. Окончательный синтаксис оператора SQL зависит от базы данных.

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

Если вы хотите, чтобы в Rails было 1 к 1, вы должны решить, какая из моделей будет хранить внешний ключ.В вашем случае вы, вероятно, хотите, чтобы status сохранял fk, поэтому добавьте целочисленный столбец с именем customer_id в таблицу состояния.Затем вы можете добавить has_one / belongs_to в Customer и Status.belongs_to всегда включается в модель с внешним ключом.

Также я не уверен, что Rails понравится, когда вы называете таблицу с единственным именем, поэтому вам, вероятно, придется проделать дополнительную работу, еслиочень хочется называть это «статусом» вместо «статусов»

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