Ruby on Rails полиморфная ассоциация

Вы должны быть в состоянии использовать array_agg для этой цели,

SELECT field_name, array_agg(id)
FROM table
GROUP BY  field_name
5
задан 6 March 2009 в 02:34
поделиться

3 ответа

ответ pjb использует Единственное Наследование Таблицы. Чтобы это работало, необходимо добавить столбец, названный типом к Пользователям и к Профилям* таблицы, так, чтобы направляющие могли сохранить, какой Пользователь это (так как Агент, Танцор и т.д. является просто подклассами Пользователя).

Это означает, что они будут все сохранены в таблицах пользователей/профилей, но когда Вы инстанцируете их, ActiveRecord инстанцирует их как корректного типа. С этим Вы сможете звонить

User.find

но также и сделайте вещи как

Actor.find, Actor.all, etc

и определите объем его только к Агентам

Google rails single table inheritance для получения дополнительной информации и примеров.

  • Конечно, необходимо было бы объявить, что Профиль разделяет на подклассы тот же способ, которым Вы объявили свои Пользовательские подклассы

класс Профиль <ActiveRecord:: Основа belongs_to: сторона пользователя

класс ActorProfile <Конец профиля

класс DancerProfile <Конец профиля

и т.д.

3
ответ дан 15 December 2019 в 01:12
поделиться

Определите отношения в подклассах:

class User < ActiveRecord::Base
end

class Actor < User
  has_many :profiles, :class_name => "ActorProfile"
end

class Dancer < User
  has_many :profiles, :class_name => "DancerProfile"
end
1
ответ дан 15 December 2019 в 01:12
поделиться

Вам необходимо убедиться, что в вашей таблице пользователей есть столбец с названием «тип». Rails сохранит ТИП класса (Пользователь, Актер и т. Д.) В этом поле базы данных.

0
ответ дан 15 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: