Представления Rails: присоединяться к отношениям has_many вместо итерации по ним? - PullRequest
2 голосов
/ 28 августа 2011

Представления Rails: объединение на объектах

Привет

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

<div>associated roles:</div>
<ul>
<% @user.roles.each do |r| %>
<li><%= r.name %></li>
<% end %>
</ul>

что приводит, например, к:

associated roles:
* registered
* manager
* administrator

Мой вопрос:

Существует ли подобный Rails способ получения вывода, подобного следующему, без необходимости перебирать весь массив?

associated roles:
registered, manager, administrator

Я попробовал метод соединения ...

<div>associated roles:</div>
<%= @user.roles.join(",") %>

... но это приводит к ...

associated roles:
#<Role:0xb6dde328>,#<Role:0xb6dde2ec>,#<Role:0xb6dde1f5>

И что-то вроде ...

<div>associated roles:</div>
<%= @user.roles.join(",").name %>

... приводит к ошибке неопределенного имени метода. Любые намеки на элегантный способ?

Спасибо

1 Ответ

5 голосов
/ 28 августа 2011
@user.roles.collect(&:name).join(",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...