2016-03-15 62 views
0

我有一个名为漫画的模型。我的总体目标是让每个漫画都有可选的变体(has_many漫画)和一个variant_of(belongs_to漫画)。当我添加一个variant_of时,我期望逆变换字段也类似于相同的关系。如何在Rails 4.2中创建一个名为has_many和belongs_to的关联?

我开始通过创建一个variant_of迁移:

class AddVariantOfToComics < ActiveRecord::Migration 
    def self.up 
    add_column :comics, :variant_of, :integer 
    end 

    def self.down 
    remove_column :comics, :variant_of, :integer 
    end 
end 

它的工作出色。然后我试图做一个变种指数,这是一方面,我遇到的麻烦:

class AddVariantsToComics < ActiveRecord::Migration 
    def change 
    add_index :comics, ['variant_of'], :name => 'variants' 
    end 
end 

漫画模型:

class Comic < ActiveRecord::Base 
    has_many :variants, :class_name => "Comic", :foreign_key => 'variants', 
    belongs_to :variant_of, :class_name => "Comic", :foreign_key => 'variant_of' 

    ... 
end 

谁能告诉我如何与这些领域?索引是否是正确的方式,或者是我的命名阻碍了吗?

+0

我真的不知道你想完成什么。你能用语言解释你想要最终结果能做什么吗? –

回答

0

has_many协会的外键应该是variant_of。像:

has_many :variants, :class_name => "Comic", :foreign_key => 'variant_of'

而且它不应该在它后面有一个逗号。在你的例子中是::foreign_key => 'variants',这不是一个有效的语法。