Вопрос

У меня есть 2 модели, которые имеют has_and_belongs_to_many связь:

class Category < ActiveRecord::Base
  has_and_belongs_to_many :templates
end

class Template < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

Я хочу знать, как я могу получить имя категории через это отношение, например, я нашел первый шаблон:

t = Template.find(:first)

Затем используя t.categories вернет объект, но я хочу получить взамен Category.name, как мне этого добиться?

Это было полезно?

Решение

Чтобы получить названия категорий, связанных с вашим первым Template например, вы можете сделать:

Template.first.categories.collect(&:name)

— Здесь используется Symbol#to_proc поддержка, которую добавляет Rails.Более подробная информация в это Railscast.

Другие советы

t.categories.first.name

Предположим, что запись категории имеет поле имени, которое вы можете сделать:

t.categories.map(&:name)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top