2010-01-30 4 views
6

Ich habe ein Modell in meiner Rails-Anwendung, die das :class_name Attribut für has_one verwendet:Wenn ich Folgendes verwende: class_name Attribut zu has_one, was mache ich in der Migration?

class Foo < ActiveRecord:Base 
    has_one :main_bar, :class_name => "Bar" 

    # ... 
end 

Ich bin ein wenig unsicher, was nun für diese Klasse in der Migration zu setzen. Kann ich Referenzen verwenden? Was wird Rails als Spaltenname für suchen? Kann ich es so machen?

class CreateFoos < ActiveRecord::Migration 
    def self.up 
    create_table :foos do |t| 
     t.references :main_bar 
    end 
    end 

    def self.down 
    drop_table :foos 
    end 
end 

Vielen Dank!

Antwort

7

Sie haben nichts mit der Beziehung "has_one" in die Tabelle eingetragen. Der foreign_key geht in die andere Tabelle. In Ihrem Beispiel oben müssten Sie Ihrer Tabelle bars einen Fremdschlüssel hinzufügen.

In der Migration können Sie:

t.references :foo 

oder:

t.integer :foo_id 

Entweder man arbeitet.