Визуализация ActiveReccord: связь с определенным значением cat - PullRequest
0 голосов
/ 27 мая 2019

Мой заголовок не совсем понятен, я не знаю, как его сформулировать, если у вас есть предложения, я могу его отредактировать.

Я хотел бы сделать все миссии из моей user_facturation. Но я не знаю, как это сделать с текущей структурой БД.

Мои отношения:

mission has_many :mission_facturations
mission_facturation belongs_to :mission

Mission_facturation может быть связано с множеством элементов фактурирования (пользователь, партнер и т. Д.). Поэтому, чтобы сохранить это отношение, я сохраняю столбцы fact_cat и fact_id. (Немного имеет полиморфные отношения)

Например, если я хочу связать свою mission_facturation с первой user_facturation, я повторяю:

mission_facturation.update(fact_cat: 8, fact_id: UserFacturation.first.id)

Теперь я хотел бы получить доступ ко всем миссиям напрямую из моей модели user_facturation. Первоначально я использовал этот метод в модели user_facturation.rb

def missions
  MissionFacturation.where(fact_cat: 8, fact_id: self.id).where.not(mission_id: nil).map(&:mission)
end

Но это не рендеринг ActiveReccord :: Relation, поэтому, когда я использую его для цикла, он не работает хорошо

Есть ли у вас какие-либо решения для перевода набора миссий в мою модель user_facturation?

1 Ответ

1 голос
/ 27 мая 2019

Начните запрос с модели Миссии, примерно так:

Mission.joins(:mission_facturations).where(mission_facturations: {fact_cat: 8, fact_id: self.id)

Или вы можете даже установить отношение в классе User, чтобы AR обрабатывал соединения для вас:

has_many :mission_facturations, -> { where(fact_cat: 8) }, :foreign_key => "fact_id"
has_many :missions, through: :mission_facturations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...