我正在使用http://ruby.railstutorial.org/chapters/user-microposts#code:sample_microposts教程构建Micropost模型 . 在运行测试以验证微博对象响应内容和user_id属性时,我得到此错误未定义方法'password=' for#下面是"User.rb"&"Micropost spec.rb"的代码块 .
**User.rb**
class User < ActiveRecord::Base
has_many :arts
belongs_to :account
attr_accessible :name, :email,:password, :password_confirmation
has_many :microposts, dependent: :destroy
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_users, through: :relationships, source: :followed
has_many :reverse_relationships, foreign_key: "followed_id",
class_name: "Relationship",
dependent: :destroy
has_many :followers, through: :reverse_relationships, source: :follower
def following?(other_user)
relationships.find_by_followed_id(other_user.id)
end
def follow!(other_user)
relationships.create!(followed_id: other_user.id)
end
def unfollow!(other_user)
relationships.find_by_followed_id(other_user.id).destroy
end
def accountName
account.name
- Micropost_spec*
需要'spec_helper'
describe Micropost do
let(:user) { FactoryGirl.create(:user) }
before do
# This code is wrong!
@micropost = Micropost.new(content: "Lorem ipsum", user_id: user.id)
end
subject { @micropost }
it { should respond_to(:content) }
it { should respond_to(:user) }
end
Migration Users
class CreateUsers <ActiveRecord :: Migration def change create_table:users do | t | t.string:name t.string:category t.timestamps
最终结束
User Model
class User <ActiveRecord :: Base has_many:arts belongs_to:account has_secure_password attr_accessible:name,:email has_many:microposts before_create {generate_token(:auth_token)}
has_many:microposts,dependent :: destroy has_many:relationships,foreign_key:“follower_id”,dependent :: destroy
has_many:followed_users,::: relationships,source ::: follow has_many:reverse_relationships,foreign_key:
“followed_id”,class_name:“关系”,依赖:: destroy has_many:followers,through :: reverse_relationships,source :: follower def generate_token(column)begin self [column] = SecureRandom.urlsafe_base64 end而User.exists?(column = > self [column])def def?(other_user)
relationships.find_by_followed_id(other_user.id)结束
def follow!(other_user)relationships.create!(follow_id:other_user.id)end def unfollow!(other_user)relationships.find_by_followed_id(other_user.id).destroy end def accountName account.name end end end
1 回答
只是猜测蓝色,但看着http://ruby.railstutorial.org/chapters/modeling-users#sec:adding_a_secure_password似乎你错过了密码部分 .
如果不是这种情况,那么您可能需要发布完整的模型(它看起来像是被剪掉了),也许是您的用户迁移文件 .