Why can't I create an array as a column in a table in Rails?

前端 未结 3 643
囚心锁ツ
囚心锁ツ 2021-01-05 19:23

Why can\'t I do something like this:

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


        
相关标签:
3条回答
  • 2021-01-05 19:45

    You may use serialize. But if an Apple is going to be an AR object, use associations.

    0 讨论(0)
  • 2021-01-05 19:49

    In Rails 4 and using PostgreSQL you can actually use an array type in the DB:

    Migration:

    class CreateSomething < ActiveRecord::Migration
      def change
        create_table :something do |t|
          t.string :some_array, array: true, default: []
          t.timestamps
        end
      end
    end
    
    0 讨论(0)
  • 2021-01-05 19:58

    Check out the Rails guide on associations (pay particular attention to has_many).

    You can use any column type supported by your database (use t.column instead of t.type), although if portability across DBs is a concern, I believe it's recommended to stick to the types explicitly supported by activerecord.

    It seems kind of funny for fruit to have_many apples, but maybe that is just an example? (I would expect apples to be a subclass of fruit).

    0 讨论(0)
提交回复
热议问题