Сбор людей без регистрации на конкретное событие - PullRequest
0 голосов
/ 17 августа 2010

Я пытаюсь собрать всех людей без регистрации на конкретное событие.

Моими моделями являются Персона, Событие и Регистрация.

В таблице MySQL будет добавлена ​​запись в таблицу регистрации с person.id и event.id (плюс комментарий и «статус» - 1 для регистрации, 2 для отмены регистрации).

Теперь я пытаюсь получить всех людей, которые не делали никаких действий, все регистрации и все отмены регистрации (в таком порядке). Как я могу это сделать?

edit: Могу ли я добавить дополнительную информацию:

Структура в базе данных:
люди: идентификатор, имя, почта ...
события: id, title, date ...
регистрации: id, person_id, event_id, status ...

Проблема:
Легко выбрать все регистрации и отмены регистрации. Но я также должен выбрать всех людей, которые не предприняли никаких действий для какого-либо события.

Один из способов, о котором я подумал, - это выбрать всех людей из модели людей. Затем выберите все регистрации в определенном событии и, наконец, сравните два массива. Что ты думаешь?

Ответы [ 3 ]

0 голосов
/ 17 августа 2010

Если вы хотите разобраться в этом, вы также можете использовать метод #select для всех объектов Person:

#controller
@people = Person.all

#view
<h2> registered people </h2>
<% @people.select { |person| person.status == 1 }.each do |reg| %>
....
<% end %>

<h2> de-registered people </h2>
<% @people.select { |person| person.status == 2 }.each do |reg| %>
....
<% end %>
0 голосов
/ 18 августа 2010

Я сделал следующее:

Выберите все люди, затем прокрутите все события и выберите всех людей, которые зарегистрированы или отменены.Затем вычтите их из всех людей ...

Вот и все.


#model
def all_register_people
    registrations = Registration.find_all_by_event_id self.id
    people = []

    for registration in registrations
      people "shift" registration.person
    end

    people
  end

#view
all_people = Person.all(:order => "firstname")

...

register_event_people = event.all_register_people
people_no_action = all_people - register_event_people

people_reg = Person.all(...)
people = people_no_action | people_reg

"shift" означает "<<" </p>

0 голосов
/ 17 августа 2010

В Ruby Controller:

@persons = Person.all(:order => "status ASC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...