2012-04-03 9 views
1

用戶需要輸入一個名稱(將插入到數據庫中),並且我需要用戶輸入名稱以在另一個函數中使用過程然後我需要新處理的輸入插入數據庫。RUBY ON RAILS - 獲取用戶輸入以插入到數據庫中,對其進行處理,將新變量插入到數據庫中

到目前爲止,我能做到的是:

A name inserted into database 
-> I saved it (name = personname, nameJob = nil) 
-> I update_attribute('nameJob', nameJob_func(params[:name])) 

有沒有更好的辦法,我可以插入兩個條目一起放入數據庫中,我處理nameJob_func後()?

回答

1

您可以執行nameJob_func()函數的。因此,您不需要明確調用它,因爲Rails會在保存對象之前調用它。只有輸入名稱需要處理。

YourModel < ActiveRecord::Base 
    # Register nameJob_func as a callback 
    before_save :nameJob_func 

private 
    def nameJob_func 
    # Do something with self.name 
    self.nameJob = 'something you made here with #{self.name}' 
    # This value will get saved to the database automatically 
    end 
end 

現在,每當對象調用.save()nameJob_func()運行,並會從:name其更新後的值。

YourModelsController < ActionController::Base 
    def create 
    @yourobj = YourModel.new(params[:name]) 
    # The callback is called and then the whole thing gets saved 
    @yourobj.save 
    end 
end 
+0

它報告「錯誤的參數數目(0 1)」 myModel.rb – 2012-04-03 11:20:07

+0

@AmySukumunu的nameJob_func作爲before_save應該沒有參數,因爲它並不需要他們 - 它只需要'自我。 name'。如果這沒有幫助,請發佈完整的錯誤。 – 2012-04-03 11:35:31

+0

謝謝!!!你拯救我的一天! – 2012-04-03 11:51:08