2012-06-09 4 views
1

나는 funzies를위한 간단한 금융 응용 프로그램을 만들고 있습니다. 나는 하나의 테이블 상속을 사용하여 크레딧과 빚을 모델화했습니다. 두 테이블 모두 트랜잭션을 상속합니다. 단지,단일 테이블 상속과 레일에 has_many

@debit = current_user.debits.build(params[:debit]) 
... 
@credit = current_user.credits.build(params[:credit]) 
... 

을하지만 사용자 방법의 차변 또는 크레딧이없는 : 나는 신용 및 직불 결제를위한 별도의 컨트롤러를 생성하고이 같은 뭔가를 할 수

class Transaction < ActiveRecord::Base 
    belongs_to :user 
end 

class Debit < Transaction 
end 

class Credit < Transaction 
end 

: 그러나 각 트랜잭션은 사용자에 속하는 업무. 또한, 나는 하나의 거래 컨트롤러 정의 할 수 있습니다 :

@transaction = current_user.transactions.build(params[:transactions]) 

하지만를 다음 형식이 null의 경우, 나는 그것을 대량 할당으로부터 보호 않다면 것을 설정하는 방법? 어느 쪽이든 약간의 피클입니다. 그 피클을 제외하고 좋은 맛.

+1

사용자에게 특정 연결을 생성하지 않는 이유는 무엇입니까? –

답변

1

명시 적으로 수행하여 두 번째 예에서 트랜잭션의 유형을 설정할 수 있습니다

@transaction = current_user.transactions.build(params[:transactions]) 
@transaction.type = "Debit" 
@transaction.save 

이 유일한 문제는 저장 및 다시로드 것까지 @transaction 인스턴스 변수 유형의 직불 카드의 수 없다는 것입니다 다른 변수에 넣습니다.

+1

감사! type' @ transaction.type = @ '@type = params를 [: 거래] .delete (: 형) @transaction = current_user.transactions.build (PARAMS [거래]) 나는이의 변화를했다 유형이보기의 숨겨진 필드에서 왔습니다. 질량 할당 때문에 params에 보관할 수 없습니다. – greenbeansugar