Rails - получение данных по 3 таблицам в - PullRequest
0 голосов
/ 16 марта 2011

У меня есть базовое приложение для управления событиями в rails 3 - пользователи (модель: пользователь) могут создавать события (модель: событие) как хосты (: событие принадлежит_ пользователю). Другие пользователи могут посещать события (: 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

Теперь проблема: у меня есть страница «Управление событиями», где хост должен иметь возможность видеть все запрошенные посещения его событий и принимать или отклонять их посещаемость. Я могу получить список событий, которые размещены пользователем (<% = render @ user.events%>), но, похоже, не может решить, как вернуть список всех пользователей, которые запросили посещаемость на мероприятиях хостов (чтобы разрешить принимающей стороне принимать или отклонять гостей).

<html>
<% unless @user.events.empty? %>   #code on the manage events page
    <table class="events" summary="User Events">
        <%= render @user.events %>
    </table>
<% end %>
</html>

Я уверен, что решение простое, но 2 дня игры и я быстро теряюсь.

1 Ответ

0 голосов
/ 16 марта 2011

В части, в которой вы отображаете участников для события, вы можете сделать что-то вроде этого:

<%= 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...