1

Я смущен, как определить область объединения в модели Rails, которая будет зависеть от других отношений ассоциации.Определить ассоциацию рельсов, только если у модели нет дочерних элементов в другой ассоциации

Пример:

class Company 
    has_many :workers 
    has_many :employees 
end 

Как я могу разрешить добавление работников в компании ТОЛЬКО ЕСЛИ компания не имеет каких-либо сотрудников? Если у него есть хотя бы один сотрудник, добавление работников в компанию должно быть отклонено и не должно быть никакой ассоциации работников, отображаемой в ответе JSON, когда я получаю компанию с хотя бы одним сотрудником, принадлежащим этой компании.

Любые идеи? Ваша помощь очень ценится. Благодаря!

ответ

1

Вы можете использовать блок для расширения вашей ассоциации:

has_many :workers do 
    def << (value) 
     super value unless ... 
    end  
    end 

Больше информации здесь: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many#461-User-a-block-to-extend-your-associations

И отображать или нет, когда вы сериализации объекта, вы можете использовать параметры метода to_json как:

@company.to_json(only: [:workers]) 

Надеюсь, это поможет.