После настройки: у пользователя может быть много адресов, но по крайней мере один из них является основным адресом.Внешний ключ в пользовательской таблице должен использоваться как указатель на основную адресную запись.
class User < ActiveRecord::Base
has_many :addresses
belongs_to :main_address, :class_name => 'Address', :foreign_key => 'main_address_id'
accepts_nested_attributes_for :main_address
end
class Address < ActiveRecord::Base
belongs_to :user # used for has_many
end
Эта настройка работает только для чтения основного_адреса.Но построение является проблемой, например, при использовании его в сложной форме с вложенными атрибутами (адресными полями) для создания.
Я получаю следующую ошибку: SQLite3::ConstraintException: addresses.user_id may not be NULL:
Проблема заключается в том,что адрес строится через main_address.build
, а адрес не получает внешний ключ user_id
, потому что он строится через main_address
.
Понятия не имею :( Как я могу использовать ассоциацию own_to дляправильно сослаться на ассоциацию has_many?