2010-02-24 2 views
2

나는 이처럼 단순한 작업을 정말로 이해할 수 없기 때문에 나는 피곤해서 죽지 않아야한다.레일스에서 ​​생성시 관련 모델 생성?

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 

답변

3

after_save하지 before_create 및 액티브 연관된 모델을 생성하고 올바르게 ACCOUNT_ID 할당에 대해 걱정하자?

것은 내가 확인하지 않은,하지만이 작동합니다 :

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

내가 콜백 방식으로 시도했지만 콜백로 전송 블록에 대해 알고하지 않았다, 그것은 작동하지 않는 것 같다. NilClass –

+1

@The Tailor가 작동하면 스크립트/콘솔을 체크인 할 수 있습니까? 아니요. 테스트 할 때 다음과 같은 오류가 나타납니다. 'No account' 새로운 레일스 애플리케이션을 만들었고 계정을 만들 때 종속 구독을 만듭니다. 그리고 실제로 서브 스크립 션을 생성하고 DB에 저장하는지 먼저 확인하십시오. – MBO

+0

네, 콘솔에서 작동했는데 테스트에서 레벨을 테스트하기 전에 광고 account.save가 필요하다는 것을 알아 냈습니다. 감사! –

관련 문제