2010-07-22 4 views
1

Je cherche une solution de mon petit problème - peut-être que vous voulez aider ^^Rails: Comment nommer un attribut d'un modèle d'une manière spécifique?

J'ai dans Ruby on Rails modelé aux classes "Personne" et "Contact". Une personne peut avoir de nombreux contacts et un contact peut avoir une personne en particulier et décrit cette relation avec une valeur

class Person < ActiveRecord::Base 
    has_many :contacts 
end 
class Contact < ActiveRecord::Base 
    belongs_to :person 
    has_one :person #how to rename this? 
end 

Dans le tableau de la personne n'a rien de spécial ou d'une colonne lié à un contact, mais le contact de table de script ressemble à ce

class CreateContacts < ActiveRecord::Migration 
    def self.up 
    create_table :contacts do |t| 
     t.references :person 
     t.references :person #how to rename this eather? 
     t.integer :value 
    end 
    end 
    def self.down 
    drop_table :contacts 
    end 
end 

comme je l'ai écrit dans le code source - je ne sais pas comment renommer la seconde relation à la personne - si vous pouvez me donner un indice, je serais très apprécié =)

salutations Klaf

Répondre

0

Qu'en est-ce:

class CreateContacts < ActiveRecord::Migration 
    def self.up 
    create_table :contacts do |t| 
     t.references :person 
     t.string  :person_description 
     t.integer :value 
    end 
    end 
    def self.down 
    drop_table :contacts 
    end 
end 

enlever has_one :person de contact.

Pour obtenir la description:

some_contact.person_description 
0

Je aurait le renomme: belongs_to à 'propriétaire' et laisser le: has_one comme 'personne'.

0

Vous n'avez pas besoin de la relation supplémentaire has_one x dans votre modèle Contact car il existe déjà une relation 1-1 implicite en raison de l'association belongs_to :person.

Notez que votre table contacts doit avoir un champ entier person_id pour agir en tant que clé étrangère.

1
class Person < ActiveRecord::Base 
    has_many :contacts 
end 
class Contact < ActiveRecord::Base 
    belongs_to :person 
    belongs_to :contact, :class_name => "Person" 
end 

#in migration 
class CreateContacts < ActiveRecord::Migration 
    def self.up 
    create_table :contacts do |t| 
     t.references :person 
     t.integer :contact_id 
     t.integer :value 
    end 
    end 
    def self.down 
    drop_table :contacts 
    end 
end 
Questions connexes