2013-09-27 2 views
0

Я создаю приложение Rails, чтобы позволить одному пользователю запрашивать поддержку у группы.Нужна ли мне дополнительная связь?

Class User 
    has_many :requests 

Class Request 
    belongs_to :users 

В настоящее время пользователь нажимает на различные ссылки для отправки запроса в другую подгруппу. Я хотел бы разрешить дальнейшую настройку, позволяя пользователю выбирать/отменять выбор людей.

Нужна ли мне ассоциация, чтобы это произошло? Что-то вроде ...

Class User 
    has_many :sent_requests, class_name 'Request' 
    has_many :received_requests 
    has_many :requests, :through received_requests 

Class Request 
    belongs_to :client, class_name 'User' 
    has_many :received_requests 

Class ReceivedRequest 
    belongs_to :user 
    belongs_to :client 

Это похоже на боль в заднице. Могу ли я просто - создать переменную экземпляра @users в запросе # нового действия контроллера без какой-либо ассоциации - передать его в представлении, установить флажки формы - убрать пользователя из списка - как-то передать эту переменную обратно action action

Я думаю, что более общий вопрос: как я могу решить, что мне нужно добавить ассоциацию?

И, наконец, может ли это быть случай, когда мне нужно использовать вложенные ресурсы?

Благодарим за помощь. Я новичок в этом ...

ответ

0

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

Ассоциации на самом деле очень просты в управлении, если они настроены должным образом. В этом случае я не вижу преимуществ в использовании вложенных ресурсов.

Альтернативой может быть использование только модифицированной ассоциации HABTM, но с атрибутом в модели соединения указать, какой пользователь владеет запросом и какой пользователь его получает.

Class User 
    has_many :requests, through: :user_requests 
    has_many :user_requests 

Class Request 
    has_many :users, through: :user_requests 
    has_many :user_requests 

Class UserRequest 
    belongs_to :user 
    belongs_to :request 

В UserRequest есть атрибут, называемый: owner. Установите для этого значение true для соединения между пользователем, выдающим запрос, и объектом «Запрос». Остальная часть Пользователей, связанных с этим запросом, получит его.

+0

Спасибо, это имеет большой смысл. – bluemihai

Смежные вопросы