2012-03-12 59 views
0

我想設置創建它的基礎上的用戶一個默認值,我不知道該怎麼做:如何根據current_user設置默認值?

class Item < ActiveRecord::Base 

    belongs_to :invoice 

    after_initialize :default_values 

    ... 

    private 

    def default_values 
    self.tax_rate = current_user.tax_rate || 0 
    end 

end 

的問題是,我不能使用CURRENT_USER模型內部。

這是我有我的控制器:

def create 
    @invoice = Invoice.new(params[:invoice]) 
    3.times { @invoice.items.build } 
    ... 
end 

有人能幫忙嗎?

回答

0

你可以通過屬性的build方法,這樣你就可以刪除after_initialize版編輯控制器:

def create 
    @invoice = Invoice.new(params[:invoice]) 
    3.times { @invoice.items.build(:tax_rate => current_user.tax_rate } 
    ... 
end 
+0

好的,謝謝!但tax_rate應屬於一個項目,而不是發票... – Tintin81 2012-03-12 11:30:56

+0

@ Tintin81設置爲發票的訪問者,因此您可以在控制器中只設置一次,您可以在項目中讀取它,而不會存儲在數據庫中。這也可以幫助您避免網頁的大量分配。 – nolith 2012-03-12 11:37:42

+0

@ Tintin81我完全重寫了一個解決方案,它從類中移除所有耦合。 – nolith 2012-03-13 08:24:12