我正在尝试学习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
答案 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