- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的模型中,我有一个 before_validation 方法:
class Post < ActiveRecord::Base
before_validation :generate_url
...
private
def generate_url
return unless self.url.blank?
year = self.published_at.class == ActiveSupport::TimeWithZone ? self.published_at.year : DateTime.now.year
self.url = "#{year}/#{self.title.parameterize}"
end
Post should require title to be set
Failure/Error: it { is_expected.to validate_presence_of(:title) }
NoMethodError:
undefined method `parameterize' for nil:NilClass
# ./app/models/post.rb:69:in `generate_url'
# ./spec/models/post_spec.rb:20:in `block (2 levels) in <top (required)>'
require 'rails_helper'
RSpec.describe Post, :type => :model do
it { is_expected.to validate_presence_of(:title) }
it { is_expected.to ensure_length_of(:title).is_at_least(5) }
it { is_expected.to validate_presence_of(:content) }
it { is_expected.to ensure_length_of(:content).is_at_least(10) }
it { is_expected.to validate_presence_of(:url) }
it { is_expected.to validate_uniqueness_of(:url) }
it { is_expected.to validate_presence_of(:published_at) }
end
FactoryGirl.define do
factory :post do
user_id 1
title "myTitle"
content "myContent."
published false
published_at "2014-09-16 08:46:38"
end
end
# note : attribute url is generated with before_validation
最佳答案
可以跳过 before_validation
:
RSpec.describe Post, :type => :model do
before{ Post.skip_callback(:validation, :before, :generate_url) }
it { is_expected.to validate_presence_of(:user_id) }
it { is_expected.to validate_presence_of(:title) }
it { is_expected.to ensure_length_of(:title).is_at_least(5) }
it { is_expected.to validate_presence_of(:content) }
it { is_expected.to ensure_length_of(:content).is_at_least(10) }
it { is_expected.to validate_presence_of(:url) }
it { is_expected.to validate_uniqueness_of(:url) }
it { is_expected.to validate_presence_of(:published_at) }
end
RSpec.describe Post, :type => :model do
Post.skip_callback(:validation, :before, :generate_url) do
it { is_expected.to validate_presence_of(:user_id) }
it { is_expected.to validate_presence_of(:title) }
it { is_expected.to ensure_length_of(:title).is_at_least(5) }
it { is_expected.to validate_presence_of(:content) }
it { is_expected.to ensure_length_of(:content).is_at_least(10) }
it { is_expected.to validate_presence_of(:url) }
it { is_expected.to validate_uniqueness_of(:url) }
it { is_expected.to validate_presence_of(:published_at) }
end
end
关于ruby-on-rails-4 - Rspec 3 - 如何在模型测试中处理 before_validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969955/
我遇到了一个奇怪的问题,我找不到合理的解释。 我正在调查一个错误并放置一些日志记录(通过 Rollbar),这样我就可以看到我的模型之一的一些实例的演变。 这是我得到的: class Connexio
在我的模型中 class Test < ActiveRecord::Base before_validation :set_pending, on: :create validates :st
我有一个 Active Admin 模型,:gallery,它有一个嵌套的回形针资源,:images。 :gallery has_many :images。 :gallery 有一个字段,:title
我想在 before_save 上添加一个钩子(Hook)。 验证发生在调用“before_save”之前,因此我将其移至 before_validation :on =>:save。 现在的问题是,
我希望我的用户模型在保存之前清理一些输入。现在,一些简单的空白剥离就可以了。例如,为了避免人们注册“Harry”并冒充“Harry”。 我认为在验证之前进行此剥离是一个好主意,以便 validates
我无法理解,如何正确使用 before_validation 回调与 Rspec。 模型/category.rb class Category < ActiveRecord::Base val
我的 before_validation 中有更新/修复一些模型数据的代码回调。 但是,我希望仍然能够运行验证以查看模型是否按原样运行。 更具体地说,我想知道数据库中的记录是否有效。所以我希望能够加载
我有几个 before_validation 回调,它们对我的模型上设置的属性进行操作。当我遇到这样的情况时,我遇到了麻烦: class Foo true def capitalize_titl
在domainpost.rb中我有这个: class Domainpost < ActiveRecord::Base attr_accessible :content, :additiona,
在 domainpost.rb 我有这个: class Domainpost < ActiveRecord::Base attr_accessible :content, :additiona,
我正在使用 Ruby on Rails 3.0.9 和 RSpec 2。我知道使用 RSpec 和 before_validation 回调存在一些已知问题,因为 before_validation
在我的模型中,我有一个 before_validation 方法: class Post ' 在 generate_url 方法中使用调试语句,我得到 self 为 nil ...所以似乎工厂帖子没有
我对 Rails 比较陌生,有点惊讶这不是一种可配置的行为……至少我还没有找到?!?我原以为 99% 的表单会受益于从所有 string 中删除空白。 & text领域?!?猜我错了... 无论如何,
我的一个模型中有一个before_validation :do_something, :on => :create。 我想测试这种情况是否发生,并且:save上没有不会发生。 有没有一种简洁的方法来测
我有一个案子正在绕着我的脑袋。 我有一个图像模型,我只想在上传时保存它。我还需要一些来自上传的信息来验证图像(如高度和宽度)。但我只希望在有人第一次尝试将图像保存文件时上传。 所以我认为最好的选择是拥
假设我有一个模型,我可能需要在保存它之前操作它的一些属性: class User < ActiveRecord::Base attr_accessible :name, :email # be
我正在使用 before_validation 来确保我的 User 模型的状态。 before_validation :renter, if: 'resident? && active? && un
Rails 3.x before_validation(:on => :create) do 不起作用。任何其他想法表示赞赏 最佳答案 这就是我所做的,效果很好。 before_validation
我应该扩展还是包含 ActiveModel:Validations:Callbacks:ClassMethods或 ActiveModel:Validations:Callbacks ? 最佳答案 我
我有一个名为 Parent 的对象,它有多个子对象: has_many :children accepts_nested_attributes_for :children, :allow_destro
我是一名优秀的程序员,十分优秀!