所以我有一個設計模型用戶,我向它添加了一些欄位,如用戶名、地址等。該模型如下所示:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
attr_accessor :username, :first_name, :last_name, :address
def profile(username)
User.find_by(:username => username)
end
end
然后我正在為這個模型撰寫 RSpec 測驗。但是,當我向資料庫中添加新用戶記錄時,它失敗了。這段代碼看起來像這樣:
require 'rails_helper'
RSpec.describe User, type: :model do
before(:all) do
User.create(email: "[email protected]", address: "nyc", first_name: "aa", last_name: "bb", username: "lol")
puts User.count
end
after(:all) do
User.destroy_all
end
it 'should return correct record when we query by username' do
user = User.find_by(username: "lol")
puts user
expect(user.address).eql? "nyc"
end
end
但是當我運行 rails spec 時,表的計數為零,所以看起來 create 方法失敗了。此外,它引發了一個錯誤:“nil:NilClass 的未定義方法‘地址’”。
我懷疑它是由設計引起的原因是,當我在用戶模型中注釋掉由設計開始的行時,rspec 正常作業。
所以有人知道原因嗎?我搜索了相關的帖子,但沒有一個有我的情況。謝謝你。
uj5u.com熱心網友回復:
如果你想用設計創建用戶,你需要password為你的用戶提供。以下內容可能有效:
User.create(
email: "[email protected]",
address: "nyc",
first_name: "aa",
last_name: "bb",
username: "lol",
password: "something",
password_confirmation: "something",
)
提示:您不需要在attr_accessor. 你可以洗掉它。并使用新的哈希樣式
# old style
User.find_by(:username => username)
# new style
User.find_by(username: username)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/346673.html
標籤:红宝石轨道 规格 设计 rspec-rails
