【发布时间】:2015-05-14 01:30:20
【问题描述】:
当我设置 physician 属性时,我想在我的 User 模型中定义一个 role 属性,要知道现在这个属性是定义 User 实例具有 :physician 的角色(因为它是一个枚举)。
它在定义角色时起作用,但是角色被错误地分配给另一个枚举类型,如我的 RSpec 测试中所示
enum role: [:assistant, :physician, :patient]
def physician=(value)
write_attribute(:role, "physician")
super(value)
end
RSpec:
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
事实上,我试图在 Rails 控制台中手动复制它
user = User.new
physician = Physician.new
user.physician = physician
user.physician?
=> false
user.role
=> "assistant"
我怀疑 write_attribute 不能很好地与 Enums 配合使用...
P.D.我也尝试了 write_attribute(:role, :physician) 但它将角色值设置为 nil
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 enums rspec-rails