rails生成模型引用类型

时间:2014-09-03 18:08:07

标签: ruby-on-rails

我生成了几个模型,并创建了以下迁移文件。在第二次迁移中,您将看到2种引用类型。 sub_configuration_id是对item_configurations_model的引用。这是一个可选引用(它可以是NULL)。

当我查看ItemConfigurationOption模型时,我注意到以下belongs_to :sub_configuration_id。这是无效的,因为belongs_to:sub_configuration_id不是模型。我应该如何引用sub_configuration_id的可能关系?

class ItemConfigurationOption < ActiveRecord::Base
  belongs_to :item_configuration
  belongs_to :sub_configuration_id
end

class CreateItemConfigurations < ActiveRecord::Migration
  def change
    create_table :item_configurations do |t|
      t.references :item, index: true
      t.string :name
      t.string :description
      t.integer :type

      t.timestamps
    end
  end
end


class CreateItemConfigurationOptions < ActiveRecord::Migration
  def change
    create_table :item_configuration_options do |t|
      t.references :item_configuration, index: true
      t.references :sub_configuration_id, index: true
      t.string :name
      t.string :value
      t.decimal :price

      t.timestamps
    end
  end
end

1 个答案:

答案 0 :(得分:1)

将第三行更改为:

belongs_to  :sub_configuration, :class_name => :ItemConfiguration, :foreign_key => :sub_configuration_id

使用上述语法,您可以声明与ItemConfiguration的关系。 然后你可以使用sub_configuration方法生成子配置对象。