【发布时间】:2016-07-15 13:03:01
【问题描述】:
我正在尝试构建一个拉数组数组的方法,很像视图中的嵌套循环。
我正在尝试在我的用户模型上构建一个方法来执行此操作:
@past_parties = User.parties
<%= @past_parties.each do |past_party| %>
<%= past_party.guests("email").uniq.each do |guest| %>
<%= guest.name %> <%= guest.email %>
<% end %>
<% end %>
这些是我的模型:
class User < ActiveRecord::Base
has_many :hosts, dependent: :destroy
has_many :parties, through: :hosts
def past_guests
self.parties.guests
end
end
class Host < ActiveRecord::Base
belongs_to :user
has_many :parties, dependent: :destroy
has_many :guests, through: :parties
end
class Party < ActiveRecord::Base
belongs_to :host
has_many :guests, dependent: :destroy
end
class Guest < ActiveRecord::Base
belongs_to :party
end
我可以让循环在视图中工作,但是当我尝试将它构建为一种方法时(所以我可以调用 current_user.past_guests,如果 current_user 是 User 的一个实例。),我得到了这个错误
undefined method `guests' for #<ActiveRecord::Associations::CollectionProxy []>
如何在不在视图中构建循环的情况下获取用户曾经邀请过的所有客人?
【问题讨论】:
-
你在User类上调用实例方法past_guests,把方法改成类方法。
-
啊,不,我写错了...我的意思是说 current_user.past_guests,而不是 User.past_guests。我已经修好了。
标签: ruby-on-rails arrays ruby