Rails has_many ИЛИ условие - PullRequest
       2

Rails has_many ИЛИ условие

0 голосов
/ 11 октября 2018

У меня есть задача, когда Garage должен получать автомобили из модели пользователя или, если у пользователя нет автомобилей, Garage должен получать автомобили из себя.В идеале, я хочу иметь все API для рельсов для отношения has_many.Есть ли шанс сделать это?

class Garage
  has_many :cars, through: :user || has_many :cars # pseudo-code
end

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я бы просто назвал ассоциации по-другому и использовал бы метод загрузки автомобилей:

has_many :cars
has_many :user_cars, through: :user, source: :cars

def all_cars
  user_cars.presence || cars
end
0 голосов
/ 11 октября 2018

Полный код, необходимый для решения вашей проблемы, неясен, но в общих чертах вот как я бы поступил при выполнении этой структурной миграции.

Во-первых, определите две четкие ассоциации:

class Garage < ApplicationRecord
  has_many :user_cars, through: :user, class_name: 'Car'
  has_many :cars
end

Затем добавьте несколько методов, которые пытаются получить оба, как вы описали:

class Garage < ApplicationRecord
  has_many :user_cars, through: :user, class_name: 'Car'
  has_many :cars

  def cars
    user_cars.presence || super
  end
end

Затем, когда все данные были перенесены в новую структуру, вы можете удалить старую связь:

class Garage < ApplicationRecord
  has_many :cars, through: :user
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...