Rails 4 Model RSpec是否有条件

凯瑟琳·班格特(Katherine Bangert)

我是Rails的新手,我试图查看我的对象以查看值是否为true,以便验证对象中的所有其他项目。如果该人是用户,我当然可以在应用程序/模型中验证姓名和电子邮件。为此编写规范的最佳方法是什么?

class Members < ActiveRecord::Base
    validates_presence_of :email, if: :is_user?
    validates_presence_of :first_name, if: :is_user?
    validates_presence_of :last_name, if: :is_user?

    def is_user?
        :is_user
    end
end
筏3

成员表上是否有一个名称为“ is_user”的字段?似乎该方法应该返回一个布尔值(true或false),而现在它返回的符号将始终被评估为true,例如,

if :is_user
  puts "will always happen" # this will be printed
end

如果数据库中存在该字段,则无需创建该方法,因为rails会为模型数据库中的所有布尔字段生成带有问号的方法。

现在,要测试您是否可以使用诸如shoulda_matchers之类的gem或编写诸如以下内容的自己的测试

describe "validations" do
  context "member is a user" do
    subject { Member.new(is_user: true) }

    it "validates presence of email" do
      subject.valid?
      expect(subject.errors["email"]).to include("can't be blank")
    end
  end

  context "member is not an user" do
    subject { Member.new(is_user: false) }

    it "doesn't require fields to have info" do
      subject.valid?
      expect(subject.errors["email"]).to_not include("can't be blank")
      expect(subject.errors["first_name"]).to_not include("can't be blank")
      expect(subject.errors["last_name"]).to_not include("can't be blank")
    end
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4 Model RSpec是否有条件

来自分类Dev

Rails的4个强项:使它们有条件吗?

来自分类Dev

有条件地用rails注册4

来自分类Dev

有条件的枚举的rails 4 sunspot

来自分类Dev

Rails 4:有条件的if语句,coffeescript无法正常工作

来自分类Dev

在rails 4中有条件地使用:if =>条件有条件地应用skip_before_filter

来自分类Dev

在rails 4中有条件地使用:if =>条件有条件地应用skip_before_filter

来自分类Dev

如何将带有条件的rails 2升级到rails 4

来自分类Dev

Rails 4活动记录验证-有条件地验证4个属性的相互依存

来自分类Dev

有条件的基于Rails 4中新表单和编辑表单的控制器操作

来自分类Dev

Rails:有条件的远程表单

来自分类Dev

有条件的Rails Elasticsearch

来自分类Dev

有条件的Rails Style Div

来自分类Dev

Rails 4 Sum by Model方法

来自分类Dev

rails:rails的条件4

来自分类Dev

rails:rails的条件4

来自分类Dev

Rails 4:从Model类获取Controller类

来自分类Dev

Rails有条件加入或包含belongs_to

来自分类Dev

Rails,葡萄实体。有条件暴露

来自分类Dev

有条件的Rails Nested加入Activerecord

来自分类Dev

Ruby on Rails:有条件地加载脚本吗?

来自分类Dev

Rails:有条件地启用Rack :: Deflater吗?

来自分类Dev

带有条件参数技巧的Rails查找方法

来自分类Dev

有条件地引用实例变量Ruby / Rails

来自分类Dev

Rails:有条件地启用Rack :: Deflater吗?

来自分类Dev

Rails验证(如果有条件)

来自分类Dev

Rails按日期有条件订购任务

来自分类Dev

Rails渲染有条件的局部

来自分类Dev

Rails:有条件地绕过片段缓存