无法从rails控制台创建模型对象

时间:2012-12-26 19:01:44

标签: ruby-on-rails ruby-on-rails-3

我的模型开头如下:

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'方法导致了这个 - 删除该方法解决了它。

0 个答案:

没有答案