Создание связанных моделей при создании в Rails? - PullRequest
2 голосов
/ 24 февраля 2010

Я должен быть до смерти уставшим, потому что действительно не могу понять такую ​​простую задачу, как эта.

Имея:

class Account < ActiveRecord::Base
  has_one :subscription, :dependent => :destroy

  after_save :append_subscription

  private
  def append_subscription
    # TODO
  end
end

# Subscription(id: integer, account_id: integer, level: integer (: 1), starts_at: date, ends_at:date, created_at: datetime, updated_at: datetime)

class Subscription < ActiveRecord::Base
  belongs_to :account
end

Я пытаюсь разрешить часть TODO, или я поступаю неправильно? Вот тест.

describe Account do
  include AccountSpecHelper

  it "should have a subscription at least at level one on creation" do
    account = Account.create
    account.subscription.level.should be(1)
  end
end

1 Ответ

3 голосов
/ 24 февраля 2010

Почему after_save, а не before_create, и пусть ActiveRecord беспокоится о создании связанной модели и правильном назначении account_id?

Я не проверял, но это должно работать:

class Account
  before_create {|account| account.build_subscription(params)} # or move it to method
end
...