如何使用ActiveRecord before_create方法停止创建记录

时间:2011-12-07 21:19:59

标签: ruby-on-rails activerecord

如何让ActiveRecord接受以下所有行。 User1将:name和:占用保存到db。 User2不需要存储在db中的“12”,但需要根据参数进行评估,然后使用一些默认值存储到db。 User3是两者的组合。

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

1 个答案:

答案 0 :(得分: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")