У меня есть база данных Airports
, которая имеет region
"свойство". Ранее я управлял свойством region
с помощью метода Airport#region
, который искал объект Region
на основе свойств аэропорта.
Теперь я добавил формальные отношения, чтобы Airport belongs_to :region
.
Все мои существующие Airports
в настоящее время имеют, конечно, nil
regions
. Я переименовал старый метод Airport#region
в Airport#set_region
.
Я хочу собственный геттер, который в основном делает region ? region : set_region
, он же region ||= set_region
. Но, конечно, тогда я получаю петлю.
region = set_region
выполняет работу, но неэффективно, так как я представляю, что она выполняет set_region
, даже если уже назначено region
.
Я также хочу иметь возможность установить «пользовательский» регион, если это необходимо (переопределить все, что set_region
будет «вычислять»). Следующие решения не работают.
Первый задает регион (видимый из сеанса pry в методе), но не таким образом, чтобы он сохранялся после возврата управления к спецификации, из которой он был вызван.
region = reg
save
Это просто петли.
update(region: reg)