2016-03-15 109 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',這不是一個有效的語法。

相關問題