rails boolean value reset on create

时间:2012-10-15 11:17:51

标签: ruby-on-rails oncreate

我的模型中有一个名为isTransfer:

的字段
class AddTxfrColumnsToTransaction < ActiveRecord::Migration
  def change
    add_column :transactions, :isTransfer, :boolean
    add_column :transactions, :transferAccount_id, :integer
  end
 end

我创建了一个控制器,它应该像action :: new一样,但仅用于转移调用new_transfer:

def new_transfer
  account = Account.find(params[:account_id])
  @transaction = account.transactions.build
  @transaction.description = "Transfer"
  @transaction.isTransfer = true
  @transaction.amount = 100

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @transaction }
  end
end

当我在视图表单中看到新传输时,在发布之前,我可以看到isTransfer设置为true。但是当我发帖时,它总是作为假进入数据库。其他字段(描述和数量)不会改变 - 它们按预期进行。

以下是模型:

class Transaction < ActiveRecord::Base
  attr_accessible :account_id, :amount, :check, :date, :description, :is_cleared, :note, :category, :isTransfer, :transferAccount_id
  validates_presence_of :amount, :date

  belongs_to :account, class_name: 'Account'
  belongs_to :transferAccount, class_name: 'Account'

end

2 个答案:

答案 0 :(得分:0)

我建议你在创建控制器方法而不是新的

中进行预设

此外,您可以添加&#34;!&#34;使save方法从控制台返回任何错误:例如

def create
    ###do your preset methods here
    if(@transaction.save!)

    end
end

答案 1 :(得分:0)

好的,这可能是一个彻头彻尾的noob错误。我原本认为,如果我在控制器中设置一个值(作为new_transfer动作的一部分),它将在提交后持续到创建动作。我的错误在于,在new_transfer表单中根本没有引用它,它从未作为参数传递回Create操作。通过将以下内容添加到我的new_transfer表单中,isTransfer现在可以在create action中进行更新:

<%= f.hidden_field(:isTransfer) %>