Находите предметы с принадлежащим вам отношением в Rails? - PullRequest
0 голосов
/ 08 июня 2010

У меня есть модель под названием Kase, каждый «случай» назначается контактному лицу с помощью следующего кода:

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"

Мне было интересно, можно ли перечислить на странице контактов все кассы, с которыми связан этот человек.

Я полагаю, мне нужно использовать команду find в модели Person? Может быть, что-то вроде следующего?

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

или я опять все неправильно понял?

Спасибо

Danny

EDIT:

Если я использую:

@kases= @person.kases

Я могу успешно сделать следующее:

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

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

но как вывести поле "jobref" из таблицы kase для каждой найденной записи?

Ответы [ 3 ]

3 голосов
/ 08 июня 2010

Может сработать следующее:

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

, где some_id - целочисленное значение.

Редактировать

у вас есть связь, поэтому выможно использовать напрямую следующим образом:

@kases= @person.kases

в вашем show.rhtml вы можете использовать переменную экземпляра непосредственно в вашем .rhtml; также @kases - это массив, поэтому вам нужно выполнить итерации по нему.

   <% if @kases.blank?  %>
    No Kase found.
   <% else %>
     <% for kase in @kases %>
       <%=h kase.jobref %>
     <% end %>
   <% end %>
0 голосов
/ 08 июня 2010

Возможно, вы захотите что-то вроде

has_many :kases

в вашей модели Person, что позволит вам сделать @kases = Person.find(person_id).kases

, а также все остальное, что имеет has_many.* Альтернативный метод - напрямую пройти через Kase:

@kases = Kase.find_all_by_person_id(person_id)

0 голосов
/ 08 июня 2010

Если ваша личная модель имеет ассоциацию has_many: kases, вы можете получить все дела, которые принадлежат человеку, использующему

@kases = Person.find(person_id).kases

Предполагая, что person_id имеет идентификатор человека, для которого вы хотите просмотреть дела.

...