我生成了几个模型,并创建了以下迁移文件。在第二次迁移中,您将看到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
答案 0 :(得分:1)
将第三行更改为:
belongs_to :sub_configuration, :class_name => :ItemConfiguration, :foreign_key => :sub_configuration_id
使用上述语法,您可以声明与ItemConfiguration的关系。 然后你可以使用sub_configuration方法生成子配置对象。