我需要为关联模型编写测试。
规范/工厂/用户.rb:
FactoryGirl.define do
factory :user do
sequence(:name){ |i| "us#{i}" }
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwerty'
password_confirmation{ |u| u.password }
info Faker::Lorem.paragraph(7)
trait :user_status do
status_id 0
end
trait :manager_status do
status_id 1
end
trait :admin_status do
status_id 2
end
end
end
Run Code Online (Sandbox Code Playgroud)
但文件spec/factories/users.rb 是空的。
架构:
create_table "statuses", force: :cascade do |t|
t.string "title"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.integer "status_id", default: 0
t.string "name"
end …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个单调模式:
class Room:
obj = None
def __new__(cls):
if cls.obj is None:
cls.obj = object.__new__(cls)
return cls.obj
def __init__(self, left_wall, right_wall, front_wall, back_wall):
self.left_wall = left_wall
self.right_wall = right_wall
self.front_wall = front_wall
self.back_wall = back_wall
def __str__(self):
return str(self.left_wall) + str(self.right_wall) + str(self.front_wall) + str(self.back_wall)
room_obj = Room(True, False, True, True)
print(room_obj)
room_obj2 = Room(True, False, False, True)
print(room_obj2)
print(room_obj is room_obj2)
Run Code Online (Sandbox Code Playgroud)
运行此代码后,在控制台中得到以下内容:
kalinin@kalinin ~/python/object2 $ python index.py
TrueFalseTrueTrue
TrueFalseFalseTrue
False
Run Code Online (Sandbox Code Playgroud)
它不应该创建两个对象