在以下表格关系的模型中实现关联的最佳方法是什么。
当前细节/目标
- 保持表结构相同,因为它是一个遗留数据库。
- 我想一举保存
User他们的选项。primary address userstable 有一个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到用户并更新它。
处理这种情况的最佳方法是什么,以使我在添加用户时具有最大的灵活性并且对性能的影响最小?