Почему я не могу создать массив в виде столбца в таблице в Rails? - PullRequest
5 голосов
/ 07 июля 2011

Почему я не могу сделать что-то вроде этого:

class CreateModels < ActiveRecord::Migration
  def self.up
    create_table :fruit do |t|
      t.array :apples
    end
  end
end

Есть ли другой способ сделать массив ("яблоки") атрибутом экземпляра класса Fruit?

Ответы [ 3 ]

20 голосов
/ 24 марта 2014

В Rails 4 и с использованием PostgreSQL вы можете использовать тип массива в БД:

Миграция:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :something do |t|
      t.string :some_array, array: true, default: []
      t.timestamps
    end
  end
end
2 голосов
/ 07 июля 2011

Вы можете использовать serialize .Но если Apple собирается быть объектом AR, используйте ассоциаций .

1 голос
/ 07 июля 2011

Ознакомьтесь с руководством Rails по ассоциациям (обратите особое внимание на has_many).

Вы можете использовать любой тип столбца, поддерживаемый вашей базой данных (используйте t.column вместо t.type), хотя, если переносимость между БД вызывает беспокойство, я считаю, что рекомендуется придерживаться типов, явно поддерживаемых activerecord. *

Кажется смешным для фруктов иметь много яблок, но, может быть, это только пример? (Я ожидаю, что яблоки будут подклассом фруктов).

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