У меня проблема с проектированием моей User
модели и созданием приличной формы для нее.Я просто хочу убедиться, что я делаю это неправильно :) Итак, это выглядит так:
User
имеет два Address
es:
- обязательный
Address
для идентификации и выставления счета, - дополнительная доставка
Address
, которую он мог заполнить или оставить пустым
Я пытался так:
class User < ActiveRecord::Base
has_one :address
has_one :shipping_address, :class_name => 'Address', :foreign_key => 'shipping_address_id'
accepts_nested_attributes_for :address
accepts_nested_attributes_for :shipping_address
#validations for user
end
и:
class Address < ActiveRecord::Base
#validations for address
end
А затем я делаю форму для User
, используя form_for
и вложенную fields_for
.Например:
= form_for @user, :url => '...' do |a|
= f.error_messages
...
= fields_for :address, @user.build_address do |a|
...
Но тогда, несмотря на то, что f.error_messages
генерирует ошибки для всех моделей, поля для Address
es не подсвечиваются при ошибке.
Также у меня проблемы сотключение проверки второго адреса, когда пользователь решил не заполнять его.
И у меня есть сомнения в правильности моего подхода.Я имею в виду отношение has_one
и общий дизайн этого устройства.
Итак, вопрос:
Я делаю это неправильно?Как бы ты сделал это на моем месте?