【发布时间】:2011-05-22 10:00:21
【问题描述】:
我目前正在为User 和has_many :addresses 制作模型;这些地址构成一个小型通讯簿,用户可以从中选择送货地址和邮寄地址。
我的问题是,将has_many 关系中的Address 对象之一标记为默认地址的最佳方式是什么?
一种方法(我认为我做对了)是维持这种关系:
class User < ActiveRecord::Base
has_many :addresses, :dependent => :destroy
has_one :default_address, :class_name => "Address"
class Address < ActiveRecord::Base
belongs_to :user
belongs_to :user, :foreign_key :default_address_id
但我知道这很草率,因为我的默认地址和我的用户之间会有两个链接。
我应该在地址中设置默认布尔值,并使用scope 获取默认值吗? (这增加了一个额外的验证,因为我不想要多个默认地址......嗯。)
我认为这在具有地址管理的应用程序中必须经常出现,所以我想我会提出我的想法并提出问题。任何关于最佳实践的建议将不胜感激。
【问题讨论】:
标签: ruby-on-rails activerecord data-modeling