Похоже, вы как бы ответили на свой первый вопрос своим третьим - если вы хотите иметь возможность иметь Users
, который не связан с Venues
, вам нужно разделить эти две модели, или будет мешать вашему желанию иметь разных типов пользователей (по крайней мере, с возможностью делать это чисто). Если вы держите их отдельно, некоторые Users
могут быть связаны с Venues
(владельцы ресторанов), а некоторые нет (обычные пользователи). В вашем случае обычные пользователи будут иметь ноль venue
.
Одно замечание - разница между has_one
и belongs_to
не всегда интуитивна (по крайней мере, не для меня), вы можете проверить руководство по ассоциациям активных записей Rails *1013*, чтобы убедиться, что вы ' использовать соответствующий.
Если существует множество функций, которые применяются только к владельцам ресторанов, вы можете унаследовать одну модель от другой, чтобы избежать загромождения базового класса (т. Е. Иметь модель User
и модель Owner
, которая наследует его, или что-то еще вот так).
Что касается формы регистрации, похоже, что вы хотите создать единую форму, которая позволяет владельцу ресторана вводить информацию, которая создаст их User
, а также их Venue
. Для этого вы можете использовать вложенные объектные формы - ссылка относится к Rails 2.3, но я использую эту функцию в проекте Rails 3, и все работает так, как объявлено.