Create_association не работает после обновления до Rails 4

Мы обновляем приложение Rails 3.2 до Rails 4, и у нас есть некоторые проблемы. У меня есть модель Account и AccounSettings:

class Account < ActiveRecord::Base

  # ...
  after_commit :create_default_settings, on: :create

  # associations
  has_one :feature_flags, class_name: "FeatureFlag"
  has_one :qb_settings, class_name: "QbSetting"
  has_one :settings, class_name: "AccountSetting"
  has_one :pos_settings, class_name: "PosSetting"
  # ...

  def create_default_settings
    self.create_settings
    self.create_feature_flags(qb_enabled: false, qb_online_enabled: false)
    self.create_default_taxes
    self.create_qb_settings(tz: self.tz)
    self.create_pos_settings(default_tax_id: SalesTax.where(account_id: self.id).first.id)
    self.qb_settings.set_qb_sync_attributes_with_date(Time.zone.now)
  end

  def create_default_taxes
    sales_tax = SalesTax.create!(name: "State", description: "State Tax", tax_rate: 0.085, tax_agency: "Franchise Tax Board", account_id: self.id) 
  end

  # ...
end


class PosSetting < ActiveRecord::Base
  # ...

  belongs_to :account

  belongs_to :default_tax, class_name: "SalesTax"
  belongs_to :default_term_code, class_name: "TermCode"

  belongs_to :default_sales_rep, class_name: 'User'

  belongs_to :payment_gateway

  def is_metric?
    measurement_system == 'metric'
  end

  enumerize :measurement_system, in: %w(english metric), default: 'english'
  enumerize :accounting_method, in: %w(accrual cash), default: 'cash'

end

Когда я создал аккаунт

account = Account.create!(имя: "Тестовая учетная запись", ...)

как я делал в рельсах 3 раньше. Я получил ошибку с отсутствующим account_id в AccountSetting (строка: self.create_settings). Поэтому я должен изменить все строки с

self.create_settings

в

self.build_settings.save

, И после того, как мне приходится каждый раз перезагружать учетную запись, когда я могу использовать account.settings, потому что, если я не перезагружаю учетную запись, у меня есть account.settings без account_id. Я не понимаю, в чем проблема, и у меня такая же проблема с FactoryGirl в тестовой среде. Это та же проблема со всеми ассоциациями (feature_flags, qb_settings,...).

0 ответов

Другие вопросы по тегам