1

我正在尝试学习 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 => "master", :email => "dude@mail.com")

对于所有属性,结果将仅返回 nil。它应该返回我用它初始化的值。我的 User.rb 文件是否有问题不允许属性初始化?我觉得这应该很容易解决,但我对 ruby​​ 和 rails 很陌生。

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

4

1 回答 1

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
于 2014-07-14T05:05:02.553 回答