2011-12-07 26 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

相关问题