Ruby类中的属性始终设置为null

时间:2014-07-14 04:42:36

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

我正在尝试学习Ruby和rails,并决定遵循Michael Hartl的教程。在第6课中,即创建用户数据库时,我回过头来查看/修改,现在每当我尝试初始化User类的新实例时,所有属性都设置为null。

这是User.rb

class User < ActiveRecord::Base

  attr_accessor :name, :email
  email_regex = /[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i   #makes sure the email follows a certain pattern.

  validates :name, :presence => true,
                    :length => { :maximum => 50 }
  validates :email, :presence => true,
                    :format => { :with => email_regex },
                    :uniqueness => true
end

在rails控制台中,我将输入

User.new(:name =&gt;“master”,:email =&gt;“dude@mail.com”)

并且结果将仅返回所有attriubtes的nil。它应该返回我用它初始化的值。我的User.rb文件有什么问题不允许属性初始化吗?我觉得这应该是一个简单的解决方案,但我对ruby和rails非常新。

注意:我的rails版本是4.1.1,ruby是1.9.3

1 个答案:

答案 0 :(得分:4)

取走attr_accessor方法。 Attr_accessor在ruby中执行以下操作,

class User < ActiveRecord::Base

....
....

def name
  @name
end 

def name=(args)
  @name = args
end

和验证执行以下操作:

def name
  # validation method here
end