ruby 默认作用域的Rspec

wfsdck30  于 11个月前  发布在  Ruby
关注(0)|答案(1)|浏览(121)

用户型号:

default_scope { where(:flg => '0') }
enum deleted_flg: { disabled: '1', enabled: '0' }

字符串
用户规范:

describe 'default scope' do
  it 'returns deleted_flg' do
    user = build(:user, first_name: 'Test', flg: "0")
    expect(user.deleted_flg).to eq "enabled"
  end
end


我不确定我所写的规范对于默认范围是否正确。
任何帮助aprreciate!

efzxgjgh

efzxgjgh1#

一个“默认作用域”是一个宏(例如过滤器或排序顺序),用于模型上的所有操作。
如果这是在一个名为User的类上,那么你应该看到这样的:

User.all # => SELECT * FROM users WHERE deleted_flg = 0

字符串
您可以通过创建两个或多个记录来测试它,然后检查User.all是否以预期的顺序返回预期的记录(如果适用)。例如:

describe 'default scope' do
  it 'returns enabled users only' do
    enabled_user = create(:user, flg: '0')
    disabled_user = create(:user, flg: '1')
    expect(User.all).to eq [enabled_user]
  end
end

奖金:

你没有充分利用enum的真正潜力!它的关键在于你可以以一种“人性化”的方式引用这些数字。
举例来说:

default_scope { where(flg: :enabled) }

# Or even:
default_scope { enabled }


并且:

disabled_user = create(:user, flg: :disabled)


the documentation更多

相关问题