我的模型开头如下:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :email, :password, :password_confirmation
before_save :encrypt_password
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
validates_uniqueness_of :email
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
我有一个带有以下内容的ruby脚本:
def create_user
user = User.new
user.assign_attributes({
:email => UserName,
:password => Password,
:password_confirmation => Password,
})
user.valid?
user.save!
end
当我在rails控制台中加载ruby脚本并运行它时,我得到:
NoMethodError: undefined method `delete' for nil:NilClass
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_methods/write.rb:28:in `write_attribute'
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_methods/dirty.rb:67:in `write_attribute'
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_methods/write.rb:14:in `email='
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes'
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:78:in `each'
from /Users/lkatz/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
更新
我还有一个'initialize'方法导致了这个 - 删除该方法解决了它。