Так как Ruby является динамическим языком, он позволяет реализовать такую магию.
Сначала вы можете получить имя текущего контроллера, используя метод controller_name
Таким образом, следующая строка:
@a = @father_model.relationship_a
Может быть переписано в нечто вроде (зависит от реальных имен вашего контроллера и ассоциаций):
@a = @father_model.send("relationship_#{controller_name}")
Также есть способ использовать @a
вместо общего @model
?
Да, вы можете определять переменные экземпляра динамически, используя instance_variable_set метод:
instance_variable_set(:"@#{controller_name}", @father_model.send("relationship_#{controller_name}"))
Но опять же, код выше предполагает, что у вас действительно есть контроллер с именем A
и отношения с именем relationship_a