Как обработать эту ассоциацию моделей на основе перечисления?

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть пользовательская модель, User.rb.

Теперь у меня есть таблица, которая выглядит как:

 user_something

user_id
something_id
something_type
  

Значение something_type берется из перечисления, которое у меня есть в моем коде rails.
Something_id может быть идентификатором из многих других таблиц, что означает, что он представляет идентификатор множества таблиц БД, а something_type сообщит мне, является ли это статьей или чем-то еще.

Итак, теперь скажем о моей модели Article.rb, я хочу создать ассоциацию с таблицей user_something, в которой будут перечислены все строки, где something_type = 3, а something_id = article_id.

 select * from user_something where something_type = 3 and something_id = xxx
  

Запрос должен был бы выполнить внутреннее объединение с таблицей users, чтобы получить мне коллекцию пользователей.

Как я могу это сделать?

Ответ №1:

Вы хотите использовать полиморфную ассоциацию

Что-то вроде:

 class User
  belongs_to :somethingable, :polymorphic=>true
end

class OtherClass
  has_many :users, :as => :somethingable
end

class YetAnotherClass
  has_many :users, :as => :somethingable
end
  

Комментарии:

1. но куда вписывается мое перечисление ruby?

2. Можете ли вы добавить какой-нибудь код, чтобы показать, как вы используете перечисление? Я не могу сказать из вопроса, что именно вы ищете.