当我设置医生属性时,我想在用户模型中定义角色属性,知道现在这个属性是定义用户实例具有:physician 的角色(因为它是枚举)。
工作,因为角色已定义,但角色被错误地分配给另一个枚举类型,如我的RSpec测试所示
SUCCEED()
RSpec的:
enum role: [:assistant, :physician, :patient]
def physician=(value)
write_attribute(:role, "physician")
super(value)
end
实际上我试图在Rails控制台中手动复制它
User is a physician should only be a physician
Failure/Error: expect(user.role).to eq('physician')
expected: "physician"
got: "assistant"
(compared using ==)
# ./spec/models/user_spec
我怀疑 write_attribute 与Enums不能很好地协同工作......
Pd积。我还尝试使用 write_attribute(:role,:physician),但它将角色值设置为nil
答案 0 :(得分:0)
我认为它已修复:
def physician=(value)
self.send("role=", "physician")
super(value)
end
但我不确定是否最好直接调用发送
答案 1 :(得分:0)
除非send
是私有方法,否则无需使用#role=
。只需直接在self
上调用访问者:
def physician=(value)
self.role = 'physician'
super(value)
end