2012-04-09 1 views
5

Wie kann ich den Primärschlüssel für mein IdClient-Feld festlegen? Ich habe alle Methoden ausprobiert, aber ich bekomme Fehler (Schienen 3.0.9) ... Könnten Sie mir helfen?Wie wird der Primärschlüssel bei der Migration von Ruby on Rails gesetzt?

class CreateCustomers < ActiveRecord::Migration 
    def self.up 
    create_table :customers do |t| 
     t.integer :IdCustomer 
     t.string :username 
     t.string :crypted_password 
     t.string :password_salt 
     t.string :persistence_token 
     t.string :email 
     t.string :Skype 
     t.string :ICQ 
     t.string :Firstname 
     t.string :Lastname 
     t.string :Country 
     t.string :State 
     t.string :City 
     t.string :Street 
     t.string :Building 
     t.integer :Room 
     t.string :AddressNote 
     t.date :DateOfReg 
     t.integer :CustGroup 
     t.float :TotalBuy 

     t.timestamps 
     add_index(:customers, :IdCustomer, :unique => true) 
    end 
    end 

    def self.down 
    drop_table :customers 
    end 
end 

Auch, wie Beziehungen im Modell festgelegt werden?

Antwort

16

Tun Sie das nicht. Verwenden Sie das integrierte Feld id als Primärschlüssel. Wenn Sie Rails verwenden, sollten Sie Ihre App den "Rails Weg" bauen, es sei denn, Sie haben sehr guten Grund nicht zu.

Wenn Sie das wirklich tun wollen, können Sie eine :primary_key Option create_table passieren:

create_table :customers, :primary_key => :idClient do |t| 
    # ... 
end 

Sie werden auch Ihr Modell über den Namen seines Primärschlüssels zu sagen brauchen self.primary_key = "idClient"

+0

aber warum Nein? Also brauche ich nicht mehr mein Feld idclient? – byCoder

+0

@ ovatsug25 Hast du meine Antwort gelesen? Das würde unter den "sehr guten Grund" fallen, den ich erwähnte. – meagar

+0

ohhh, ich weiß ... danke, dass du auf die Technik hingewiesen hast ... aber ich will es immer noch nicht wirklich machen ... – ovatsug25