我在rails 3中有一个基本的事件管理应用程序 - 用户(模型:用户)可以创建事件(模型:事件)作为主机(:event belongs_to user)。其他用户可以参加活动(:用户has_many:参加,:通过=>:出席,:来源=>:活动)。所有这些模型和协会都运作良好(一个良好的开端)。
# the user model
class User < ActiveRecord::Base
has_many :events, :dependent => :destroy
has_many :attendances, :foreign_key => "attendee_id", :dependent => :destroy
has_many :attending, :through => :attendances, :source => :event
end
# the events which users create
class Event < ActiveRecord::Base
belongs_to :user
has_many :attendances, :foreign_key => "event_id",:dependent => :destroy
has_many :guests, :through => :attendances, :source =>:user
end
# the join model for attendances
class Attendance < ActiveRecord::Base
belongs_to :attendee, :class_name => "User" #edit: addedin :class_name... after comment
belongs_to :event, :class_name => "Event"
end
现在问题是:我有一个'管理活动'页面,主持人应该可以看到所有请求的参加活动,并接受或拒绝他们的出席。 我可以获取用户托管的事件列表(&lt;%= render @ user.events%&gt;)但似乎无法确定如何恢复已请求出席主机的所有用户的列表'事件(允许主人接受或拒绝客人)。
<html>
<% unless @user.events.empty? %> #code on the manage events page
<table class="events" summary="User Events">
<%= render @user.events %>
</table>
<% end %>
</html>
我确信解决方案很简单,但是玩了2天,我很快就无处可去。
答案 0 :(得分:0)
在为事件呈现与会者的部分中,您可以执行以下操作:
<%= event.name %><br/>
<% event.attendances.each do |a| %>
<%= a.attendee.name %><br />
<% end %>
或者在同一视图中,您也可以这样写:
<%= @event.name %><br/>
<% @event.attendances.each do |a| %>
<%= a.attendee.name %><br />
<% end %>