2012-10-15 48 views
0

我在我的模型中的字段名爲isTransfer:軌布爾值重上創建

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

我創建了一個控制器,它應該像動作:新的,但只是轉移呼叫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 
+0

您可以在保存它的位置顯示您的操作? –

+0

你在哪裏保存@transaction?使用@ transaction.save –

+0

我相信保存發生在創建操作中。 – Cagilla

回答

0

好吧,這可能是一個完整的noob錯誤。我最初相信,如果我在控制器中設置了一個值(作爲new_transfer操作的一部分),它將在提交後持續到創建操作。我的錯誤是,在new_transfer表單上根本沒有引用它,它從來沒有作爲參數傳遞迴Create操作。通過將以下內容添加到我的new_transfer表單中,isTransfer現在在創建操作中進行更新:

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

我會建議你做在創建控制器方法的預設,而不是新的

此外,您還可以添加一個「!」使存儲方法返回任何錯誤從控制檯:例如

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

    end 
end 
+0

我的確發現了一篇關於設置attr_accessible的帖子,認爲一定是它,但我已經設置了它。發表上面的模型 – Cagilla

+0

我不知道這將如何工作。當我按下新的傳輸按鈕時,我想要一個新的事務,也設置位傳輸。然後用戶將更新記錄併發布。按下提交後控制器是否從新創建?或者,我沒有在表單上包含isTransfer作爲可編輯字段的問題? – Cagilla

+0

謝謝你的時間。當我寫下最後的評論時,我意識到了答案。 – Cagilla