在Rails中查找具有belongs_to关联的项目?

时间:2010-06-08 14:24:41

标签: ruby-on-rails model find associations

我有一个名为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"

我想知道是否可以在联系人页面上列出与该人有关的所有情人。

我假设我需要在Person模型中使用find命令?也许类似以下内容?

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

还是我完全误解了一切?

谢谢,

丹尼

编辑:

如果我使用:

@kases= @person.kases

我可以成功地执行以下操作:

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

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

但如何从kase表中为每个找到的记录输出“jobref”字段?

3 个答案:

答案 0 :(得分:3)

也许以下可行:

@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 %>

答案 1 :(得分:0)

如果您的个人模型具有关联has_many:kases,则可以使用此

获取属于某个人的所有案例
@kases = Person.find(person_id).kases

假设person_id具有您想要查看案例的人的ID。

答案 2 :(得分:0)

你可能想要像

这样的东西
has_many :kases
您的Person模型中的

,可让您执行@kases = Person.find(person_id).kases

以及has_many启用的所有其他内容。

另一种方法是直接通过Kase:

@kases = Kase.find_all_by_person_id(person_id)