将相关的Ruby on Rails activeRecord对象添加到Controller中的数组

时间:2012-04-25 12:21:11

标签: ruby-on-rails ruby arrays enumeration

我正在尝试在应用程序控制器的一个:helper_method中将对象添加到Ruby on Rails中的数组中。在这个例子中,other_roommates作为一个包含2个对象的数组返回,类型为house_tenant,这正是我所期望的。

  @other_roommates = Array.new

  @other_roommates = current_house.house_tenant.where("active = '1' AND person_id != ?", current_user.id)

我想要做的是使用来自每个HouseTenants的相关对象Person创建一个数组,但是当我这样做时,我获得与上面完全相同的数组:

  @other_roommates = Array.new

  joins = current_house.house_tenant.where("active = '1' AND person_id != ?", current_user.id)

  joins.each do |join|
    @other_roommates << join.person
  end

在上面的例子中,我希望数组中有2个Person对象与其中的house_tenant对象相关。我可以通过枚举other_roommate数组并在每个对象上调用.person来获取视图中的那些Person对象,但是它在应用程序控制器中不起作用是没有意义的。为了进一步混淆我,我又尝试了两次测试:

  for x in 0..joins.count - 1
    @other_roommates << joins[x]
  end

  for x in 0..joins.count - 1
    @other_roommates << x
  end

当我输出数组的内容时,两个例子都给我完全相同的东西“0,1”或x的值。这是视图中的循环:

<% other_roommates.each do |roommate| %>
<%= roommate %>
<% end %>

对于它的价值,所有这些都在Heroku Cedar堆栈上运行。我知道这可能是一个基本问题,但我不知道我做错了什么。非常感谢任何帮助!

编辑:这是模型类的关系。如果我在视图中而不是在ApplicationController中执行它,我可以以完全相同的方式遍历对象,仅仅由于某种原因它在这里不起作用。

class HouseTenant < ActiveRecord::Base
  belongs_to :house
  belongs_to :person
end


class House < ActiveRecord::Base
  has_many :house_tenant
end

class Person < ActiveRecord::Base
  has_many :house_tenant
end

house_tenant的架构有'house_id'和'person_id',并且控制台中的关系也很好。

0 个答案:

没有答案