如何获得集合成员所属的模型

时间:2014-08-25 13:50:03

标签: ruby-on-rails activerecord associations

我认为这很简单,但出于某种原因,我无法在任何地方找到答案。我有一个模型class_profiles,其中包含许多parent_profiles并且有许多parent_invitations。在class_profiles.rb文件中,我有一个方法,它返回parent_profilesparent_invitations的单个排序集合,如下所示:

  def parents
    list = parent_profiles.uniq
    list += parent_invitations.where(status_code: 0).uniq
    list.sort_by { |p| [p.last_name, p.first_name]}
  end

到目前为止一切顺利。稍后我使用以下实例变量来保存该集合:

@parents = @class_profile.parents

因此,在@parents中,我会得到类似的结果:

[
  #<ParentProfile id: 45, first_name: "John", last_name: "Collier", ...>,
  #<ParentInvitation id: 122, first_name: "Sally", last_name: "Duncan", ...>,
  #<ParentInvitation id: 54, first_name: "Jessica", last_name: "Eggers", ...>,
  ....
]

我对@parents成员的显示逻辑略有不同,具体取决于他们是ParentProfile还是ParentInvitation,那么我怎样才能获得@parents成员的模型} 属于?我假设必须有类似@parents[0].model的东西,但这不起作用,我不知道实现这个的方法的名称。这是否存在?

2 个答案:

答案 0 :(得分:2)

尝试@parents[0].class这将返回对象的类名。如果它不起作用,请尝试@parents[0].class.to_s

答案 1 :(得分:0)

您可以使用is_a? <{1}}来查看@parents[0].is_a? ParentProfile