Лучший способ указать запись по умолчанию для отношения has_many в rails

У меня есть Accounts и AccountAddressess. У учетной записи может быть много AccountAddressess, и я хотел бы указать один как «default_account_address», поэтому в таблице Account у меня есть столбец с именем «default_account_address_id». Вот текущее состояние моделей.

class Account < ActiveRecord::Base
  has_many :account_addresses
  belongs_to :default_account_address,
             :class_name => "AccountAddress",
             :inverse_of => :account_assigned_to_as_default
end

class AccountAddress < ActiveRecord::Base
  belongs_to :accounts
  has_one :account_assigned_to_as_default, 
          :class_name  => "Account", 
          :foreign_key => :default_account_address_id, 
          :inverse_of  => :default_account_address
end

Это работает нормально, за исключением того факта, что @ account.default_account_address возвращает адрес учетной записи, а @ account.account_addresses возвращает пустой массив.

Итак, проблема в том, что адрес учетной записи по умолчанию не включен в @ account.account_addresses.

Есть идеи, как лучше всего решить эту проблему? Я подумал о habtm, но это не подходит. Я рассматривал возможность использования has_one: default_account_address, но это не имеет смысла, потому что столбец default_account_address_id находится в таблице учетной записи. Спасибо.

6
задан Shagymoe 6 April 2011 в 18:37
поделиться