在以下表格关系的模型中实现关联的最佳方法是什么。
当前细节/目标
- 保持表结构相同,因为它是一个遗留数据库。
- 我想一举保存
User
他们的选项。primary address
users
table 有一个primaryaddressid
指向 a 的列user_addresses
。addressid
桌子。user_addresses
表有一个userid
指向的外键users
。userid
这是我到目前为止所拥有的。
# User model class associations
has_many :user_addresses, :foreign_key => "userid", :autosave => true
belongs_to :primary_address, :class_name => "UserAddress", :foreign_key => "primaryaddressid", :autosave => true
我希望能够有选择地创建具有主要地址的用户,例如......
User.new
User.primary_address.build(:street => 'dfkslf', :street2 => 'dfjkslfjlks231', etc)
User.save
然后,这将保存记录并自动更新 User 表的 primaryaddressid。
问题...
我在想我的主要选项是创建一个after_save
验证是否primaryaddressid
有值,如果没有,则查找在user_addresses
给定的情况下插入的最新地址userid
并将其添加addressid
到用户并更新它。
处理这种情况的最佳方法是什么,以使我在添加用户时具有最大的灵活性并且对性能的影响最小?