- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个 before_validation 回调,它们对我的模型上设置的属性进行操作。当我遇到这样的情况时,我遇到了麻烦:
class Foo < ActiveRecord::Base
before_validation :capitalize_title
validates :title, :presence => true
def capitalize_title
title.upcase
end
end
我编写了一个测试来确保不允许使用“nil”标题,但由于未定义 nil.upcase,该测试出现错误。我想处理这个错误,但我已经有了在 before_validation 回调之后运行的错误处理。
如果可以避免的话,我不想检查所有 before_validation 回调以确保数据存在。
有没有一种干净的或公认的方法来处理这种情况?
最佳答案
只需检查您是否有标题。并且不要忘记保存修改后的标题。
def capitalize_title
title = title.upcase if title
end
如果您需要使用 before_validation
Hook 进行修补,那么您将不得不在两个地方处理无效数据。如果您的验证很复杂,您可以将其分为两部分:一部分必须在 before_validation
运行之前为真,另一部分必须为 之后 before_validation
已运行:
before_validation :mangle_data
validate :data_is_okay
#...
def mangle_data
return if(!data_is_mangleable)
#... mangle away
end
def date_is_okay
if(!data_is_mangleable)
# complain
end
if(!data_is_properly_mangled)
# complain some more
end
end
def data_is_mangleable
return false if(thing.nil?)
# etc.
end
def data_is_properly_mangled
# check that stuff that the before_validation hook doesn't
# have to care about.
end
关于ruby-on-rails - 我的 Rails before_validation 回调应该如何处理错误数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606244/
我遇到了一个奇怪的问题,我找不到合理的解释。 我正在调查一个错误并放置一些日志记录(通过 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
我是一名优秀的程序员,十分优秀!