実際、私は複式簿記のためにプルタスの宝石をテストしています。私はアカウントとトランザクションを持っています。トランザクションを記録したい場合は、次の手順があります。
1-取引金額を受け取る2つのアカウントを作成します(例:現金(借方)と引き出し(貸方)。
2-トランザクションを作成し、その金額をdebit_accountとcredit_accountに渡します。これは、ステップ番号1で作成しました。アカウントのタイプを見つけて、名前を見つけます(transactions_controller.rbを参照)。
models / account.rb
class Account < ActiveRecord::Base
set_inheritance_column do
"type" + "_id"
end
validates_presence_of :name, :type
validates_presence_of :name
has_many :credit_transactions, :class_name => "Transaction", :foreign_key => "credit_account_id"
has_many :debit_transactions, :class_name => "Transaction", :foreign_key => "debit_account_id"
has_many :transactions
accepts_nested_attributes_for :transactions
end
models / transaction.rb
class Transaction < ActiveRecord::Base
belongs_to :commercial_document, :polymorphic => true
belongs_to :credit_account, :class_name => "Account"
belongs_to :debit_account, :class_name => "Account"
belongs_to :account
validates_presence_of :credit_account, :debit_account, :amount, :description
validates_associated :credit_account, :debit_account
end
controller / transactions_controller.rb
def new
@transaction = Transaction.new
respond_to do |format|
format.html #new.html.erb
format.json { render :json => @transaction }
end
end
def create
@transaction = Transaction.new(params[:transaction])
@transaction.credit_account = Account.where(:type => params[:type]).where(:name => params[:name])
@transaction.debit_account = Account.where(:type => params[:type]).where(:name => params[:name])
respond_to do |format|
if @transaction.save
format.html { redirect_to @transaction, :notice => 'Transaction was successfully created.' }
format.json { render :json => @transaction, :status => :created, :location => @transaction }
else
format.html { render :action => "new" }
format.json { render :json => @transaction.errors, :status => :unprocessable_entity }
end
end
end
transaction / _form.html.erb
<%= simple_form_for @transaction do |f| %>
<%= f.input :description %>
<%= f.input :debit_account %>
<%= f.input :credit_account %>
<%= f.input :amount %>
<%= f.button :submit %>
<% end %>
トランザクションを送信すると、次のエラーメッセージが表示されます
ActiveRecord::AssociationTypeMismatch in TransactionsController#create
Account(#2160906760) expected, got String(#2151988680)
私は何が間違っているのですか?