Я бы смоделировал это по-другому. Надеюсь, это даст вам некоторые идеи ... Я не уверен, что это будет работать как есть ...
class TankTransfer < AR:B
has_one :from_transfer
has_one :to_transfer
attr_accessible :from_tank
attr_accessible :to_tank
attr_accessible :amount_to_transfer
before_create :create_transfers
protected
def create_transfers
self.to_transfer.build(:tank => self.to_tank, :amount => self.amount_to_transfer)
self.from_transfer.build(:tank=> self.from_tank, :amount => -self.amount_to_transfer)
end
end
class Transfer < AR:B
belongs_to :tank
end
class Tank < AR:B
has_many :transfers
end
Тогда ваша форма будет выглядеть (если вы используете formtastic):
<% semantic_form_for @tank_transfer do |form| %>
<% form.inputs :name => "Tank transfer" do %>
<%= form.input :from_tank %>
<%= form.input :to_tank %>
<%= form.input :amount_to_transfer %>
<% end %>
<% form.buttons do %>
<%= form.commit_button %>
<% end %>
<% end %>
Ваш контроллер будет очень простым контроллером, как вы видите во всех примерах.