如何在使用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