如何在使用Ruby on Rails 3的播种过程中避免validation,回调和’attr_accessible’效果?

我正在使用Ruby on Rails 3,我正在尝试在我的应用程序数据库中播种数据。

在’RAILS_ROOT / models / user.rb’中我有:

class User  true validates :surname, :presence => true validates :email, :presence => true end 

在’RAILS_ROOT / db / seeds.rb’中我有:

 # Test 1 User.find_or_create_by_email ( :name => "Test1 name", :surname => "Test1 surname", :email => "test1@test1.test1" ) # Test2 User.find_or_create_by_email ( :name => "", :surname => "", :email => "test2@test2.test2" ) 

所以,在终端上运行

 rake db:seed 

当然数据库不会填充数据,因为’attr_accessible’到nil(Case Test1)并且validation未通过(Case Test2)。

我想在播种过程中跳过validation和“attr-accessible effects”。 可能吗? 如果是这样,怎么办?

PS:我不想在’RAILS_ROOT / db / migrate / 201 …. rb’代码中使用这样的代码:

 execute "INSERT INTO users ( name, surname, email ) VALUES ( "Test1 name", "Test1 surname", "test1@test1.test1")" 

UPDATE

我还需要跳过所有回调可能吗? 如果是这样,怎么样?

如果你查看ActiveRecord的文档,你会看到attributes= method有一个参数来启用它:

attributes=(new_attributes, guard_protected_attributes = true)

像这样用它:

 # Create a new user @user = User.new # Attributes for the user @attrib = { :name => "Test1 name", :surname => "Test1 surname", :email => "test1@test1.test1" } # Use 'send' to call the attributes= method on the object @user.send :attributes=, @attrib, false # Save the object @user.save