2011-12-07 47 views
-1

如何讓ActiveRecord接受下面的所有行。 User1將兩個名稱和:職業保存到數據庫。 用戶2不需要存儲在數據庫中的'12',但需要根據參數進行評估,然後使用一些默認值存儲到數據庫。 User3是兩者的組合。如何使用ActiveRecord before_create方法停止創建記錄

user1 = User.new(:name => "David", :occupation => "Artist") 
user2 = User.new(12) 
user3 = User.new(15, :name => "Mike", :occupation => "Programmer") 

回答

1

你的問題不是很清楚,但我會回答根據我的理解...

像這樣的東西應該在你的User模式工作:

before_create :set_defaults 

def set_defaults 
    return true unless default_case 
    case default_case 
    when 12 
     self.name = 'John' 
     self.occupation = 'Magician' 
    when 15 
     self.size = 'L' 
    end 
end 

然後,當您創建新模型時:

User.new(:default_case => 15, :name => "Mike", :occupation => "Programmer") 
+0

如果set_defaults返回false,會發生什麼情況?它取消創建? – basheps

+0

沒有,除非我錯了。但如果方法成功,我想返回「真」。它與'before_save'回調保持一致,其中'true'表示成功。 –

+0

如果我使用User.new(15)而不是User.new(:default_case => 15),如何訪問set_defaults函數中的參數? – basheps

相關問題