Да, использование «один на один» для нас оправдано, как вы сказали, для того, чтобы держать вещи разделенными.Что касается доступа к ним из контроллера, вы должны иметь возможность делать это, если вы правильно определили ассоциации в моделях.
Модель пользователя должна иметь:
has_one : detail
, а модель детализации должна иметь:
belongs_to : user
, тогда если у вас есть внешний ключ с именем 'user_id' вТаблица «детали», все должно работать нормально.
теперь вы можете обращаться к обеим моделям, используя друг друга, например
User.find(1).detail
или
Detail.find(1).user
, теперь вы можете обновить обаодинаково с обоих их контроллеров.