我正在查看 Hartl 的 Rails 教程,虽然我能够在控制台中成功创建用户,但我对当前的反馈感到困惑:
2.0.0-p247 :014 > user.update_attributes name: "Ryan Waits", email: "ryan.waits@gmail.com"
(0.3ms) begin transaction
User Exists (0.3ms) # commented out
=> true
2.0.0-p247 :015 > user
=> #<User id: 2, name: nil, email: nil, # commented out
2.0.0-p247 :016 > user.name
=> "Ryan Waits"
它按应有的方式创建用户,但是为什么我需要专门调用 user.name 或 user.email 以显示他们的值……有人知道吗?
用户模型:
class User < ActiveRecord::Base
before_save { self.email == email.downcase }
attr_accessor :name, :email
validates :name, presence: true
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false}
has_secure_password
validates :password, length: { minimum: 6 }
end
用户控制器:
class UsersController < ApplicationController
def index
@user = User.all
end
def new
end
def show
@user = User.find params[:id]
end
end
除了显示用户已创建的控制台之外,当我尝试在索引或显示视图上显示它们时,数据库中没有任何用户。
索引错误:
未定义的方法“电子邮件”#
索引视图:
<%= @user.name %>
<%= @user.email %>