2011-11-28 4 views
1

J'ai une entrepriseRails 3 Configuration Modèle

La société peut avoir un statut

Je me reçois confus dans la façon de mettre en place mes associations dans les modèles

En gros, dans les vues, Je vais avoir une liste déroulante des statuts et l'utilisateur sélectionne un pour chaque entreprise ...

companies 
id 
name 
status_id 

company_statuses 
id 
status (Unknown, Live, Dissolved, etc...) 

Ma façon de penser à l'aide d'une table de company_statuses est qu'ils pourraient changer overtim e et en changeant simplement le nom de l'état dans le tableau met à jour toutes les compagnies à la fois etc ...

Est-ce la façon de rails?!, ou serais-je mieux coder en dur les valeurs dans le code et mettre à jour la base de données manuellement si des changements doivent être faits?!

Répondre

0

Une entreprise a un droit de statut? Si tel est le cas, la relation est plusieurs à un et ne nécessite pas de table de liaison company_status. Configurez simplement votre table d'entreprise pour avoir une colonne d'état.

Mes Rails 3 est un peu rouillé, mais votre modèle d'entreprise mettra en vedette:

has_one :status 

Et votre modèle d'état auront:

belongs_to :company 
+0

Je suis un peu confus encore, vous avez une association has_one ci-dessus mais vous dites que la relation est plusieurs à un? J'ai aussi besoin d'une table pour contenir les statuts dans la base de données (company_statuses). Le statut est trop générique à cause des autres tables que j'ai ... –

+0

Yep, has_one est là comme une société "a un" statut. Inversement, un statut "appartient" à une entreprise (merci Ryan pour le montage!). Vous pouvez toujours avoir une table pour Status qui consiste en un identifiant unique et le nom du statut. Votre table d'entreprise contiendra une clé étrangère de statut (status_fk). Notez que vous ne devriez pas avoir à vous soucier de créer cette clé vous-même, Rails devrait s'en occuper une fois que vous aurez correctement défini vos relations. – Ger

+0

Vraiment confus maintenant lol ... Selon les docs "belongs_to" Spécifie une association un-à-un avec une autre classe. Cette méthode ne devrait être utilisée que si cette classe contient la clé étrangère. Si l'autre classe contient la clé étrangère, alors vous devriez utiliser "has_one" à la place ... Cela devrait être l'inverse je pense! –

1

a réussi à le faire fonctionner en utilisant le code suivant. C'est un has_many relation pas has_one

class Company < ActiveRecord::Base 
    belongs_to :status_code 
end 

class StatusCode < ActiveRecord::Base 
    has_many :companies 
end