2010-06-08 10 views
0

J'ai un modèle appelé Kase chaque « cas » est attribué à une personne de contact via le code suivant:Trouver des objets avec belongs_to associations dans Rails?

class Kase < ActiveRecord::Base 
    validates_presence_of :jobno 
    has_many :notes, :order => "created_at DESC" 

    belongs_to :company # foreign key: company_id 
    belongs_to :person # foreign key in join table 
    belongs_to :surveyor, 
      :class_name => "Company", 
      :foreign_key => "appointedsurveyor_id" 
    belongs_to :surveyorperson, 
      :class_name => "Person", 
      :foreign_key => "surveyorperson_id" 

Je me demandais s'il est possible de la liste sur la page des contacts tous les Kases que cette personne est associée à.

Je suppose que j'ai besoin d'utiliser la commande find dans le modèle Person? Peut-être quelque chose comme le suivant?

def index 
@kases = Person.Kase.find(:person_id) 

ou est-ce que je me trompe encore complètement?

Merci,

Danny

EDIT:

Si j'utilise:

@kases= @person.kases 

je peux faire avec succès ce qui suit:

<% if @person.kases.empty? %> 
    No Cases Found 
<% end %> 

<% if @person.kases %> 
This person has a case assigned to them 
<% end %> 

mais comment puis-je outp ut le champ "jobref" de la table kase pour chaque enregistrement trouvé?

Répondre

3

Peut-être que cela devrait fonctionner:

@person.kase.conditions({:person_id => some_id}) 

some_id est une valeur entière.

Modifier

vous avez association afin que vous puissiez utiliser directement comme suit:

@kases= @person.kases 

dans votre show.rhtml vous pouvez utiliser la variable d'instance directement dans votre .rhtml aussi @kases est un tableau si vous devoir l'itérer.

<% if @kases.blank? %> 
    No Kase found. 
    <% else %> 
    <% for kase in @kases %> 
     <%=h kase.jobref %> 
    <% end %> 
    <% end %> 
+0

un nombre entier au sein de laquelle table, les Kases un? – dannymcc

+0

s'il vous plaît vérifier ma réponse éditée. – Salil

+0

Si j'utilise @ kases = @ person.kases, comment afficher la liste dans la vue Person show? Quelque chose comme ça? <% si @ person.kases.empty? %> Aucun cas trouvés <% end %> <% @ si person.kases%> <% = h @ kase.jobref%> <% end %> – dannymcc

0

Si votre modèle personne a l'association has_many: Kases alors, vous pouvez obtenir tous les cas qui appartiennent à une personne utilisant ce

@kases = Person.find(person_id).kases 

En supposant person_id a l'identifiant de la personne que vous voulez pour voir les cas pour.

0

Vous voudriez probablement quelque chose comme

has_many :kases 

dans votre modèle de personne, qui vous permet de faire @kases = Person.find(person_id).kases

ainsi que tout ce qui permet has_many.

Une autre méthode consisterait à passer par Kase directement:

@kases = Kase.find_all_by_person_id(person_id)

Questions connexes