Tag: validation

ActiveRecord – 用警告替换模型validation错误

我希望能够在rails中保存/更新模型时用警告替换字段错误。 基本上我想只是编写一个包装器,围绕validation方法生成错误,保存模型,也许可以在警告哈希中使用(它的工作方式就像错误哈希一样): class Person true, :warning => true # >> p = Person.new(:name => ‘john’, :age => 2.2) >>> p.save => true # >> p.warnings.map { |field, message| “#{field} – #{message}” } [“age – is not a number”] # <– have access to warning content 知道如何实现这个吗? 我能够添加:warning => false默认值为ActiveRecord::Validations::ClassMethods::DEFAULT_VALIDATION_OPTIONS通过扩展模块,但我正在寻找有关如何实现其余部分的一些见解。 谢谢。

在validation外键时,Accept_nested_attributes_for出现问题

我正在使用Ruby on Rails v3.2.2。 我想在使用accepts_nested_attributes_for和validates_associated RoR方法时解决与validation外键有关的问题。 也就是说,我有以下模型类: class Article ‘category_id’ accepts_nested_attributes_for :category_associations, :reject_if => lambda { |attributes| attributes[:category_id].blank? } validates_associated :category_associations end class CategoryAssociation ‘article_id’ belongs_to :category, :foreign_key => ‘category_id’ validates :article_id, :presence => true validates :category_id, :presence => true end ……我有以下控制器动作: class ArticlesController < ApplicationController def new @article = Article.new 5.times { @article.category_associations.build } […]

Railsvalidationfull_name

嘿……你如何validation一个full_name字段(名字姓氏)。

报告记录validation警告和错误的有效方法?

我有一个Rails项目,就像在大多数应用程序中一样,我们有许多硬性和快速的validation规则,所有对象在持久化之前必须符合这些规则。 当然,ActiveModel的Validations是完美的 – 我们使用Rails默认值和我们自己的手动validation的组合。 但是,我们越来越多地反对用例,我们希望提醒用户注意这样的情况:尽管他们的数据在最严格的意义上是无效的,但是有些元素应该审查,但哪些不应该本身可以防止记录持久性发生。 几个例子,我的头顶: 已经在所有CAPS中提交了一个post标题,这可能是有效的,但可能不是 一个正文文本比一个建议的单词数量少于或多于x个单词 validation模块对于我们如何处理validation错误是一个很好的比喻 – 并且有很多匹配器已经可用 – 理想情况下我希望能够重用该基本代码,但是生成一系列warnings项和errors 。 这将使我们能够以不同的方式突出显示这些案例,而不是暗示可能违反房屋风格等同于更严重,严格执行的规则。 我查看了诸如activemodel-warnings之类的 gem,但是它们通过改变在validation记录时检查哪些匹配器,相应地扩展或缩小errors集合来工作。 同样地,我查看了内置:on参数以进行validation,看看我是否可以手动滚动,但是所有违规都会在错误集合中结束,而不是分开。 有没有人尝试过类似的东西? 我无法想象我是唯一一个想要实现这一目标的人,但我现在正在画一个空白……

无需密码即可更新`User`属性

现在,用户可以编辑一些属性,而无需输入密码,因为我的validation设置如下: validates :password, :presence =>true, :confirmation => true, :length => { :within => 6..40 }, :on => :create validates :password, :confirmation => true, :length => { :within => 6..40 }, :on => :update, :unless => lambda{ |user| user.password.blank? } 但是,在用户执行此操作后,将删除其密码 – update_attributes将其密码更新为“”。 这是我的更新定义: def update if @user.update_attributes(params[:user]) flash[:success] = “Edit Successful.” redirect_to @user else @title […]

如何在Rails模型中validation字符串是否为json

我正在构建一个简单的应用程序,并希望能够在数据库中存储json字符串。 我有一个带有json列的表接口,我希望我的rails模型validation字符串的值。 所以类似于: class Interface true, :length => { :minimum => 3, :maximum => 40 }, :uniqueness => true validates :json, :presence => true, :type => json #SOMETHING LIKE THIS :contains => json #OR THIS end 我怎么做?

使用地理编码器gemvalidation经度/纬度

我跟着这个Geocoder Railscast并且我正在玩它以查看我是否可以添加validation到Geocoder Gem返回的经度和纬度坐标,用户输入的错误地址不会返回任何经度和纬度坐标。 我能够通过下面的代码将其工作到一定程度但是当我输入正确的地址时,它会在用户第一次提交表单时向用户提供validation错误,即使经度和纬度坐标返回的位置也是如此。 用户第二次提交表单时,它的工作原理。 我怀疑这种情况正在发生,因为当用户提交表单时,没有经度和纬度坐标,但是第二次是因为地理编码器gem返回了坐标。 我的代码有问题或者我应该以不同的方式接近它吗? 模型 class Location {message: “Not a valid location on Google Maps, please check name address & country fields” } geocoded_by :address after_validation :geocode, :if => :address_changed? def address [name, address1, country].compact.join(‘ ‘) end def address_changed? attrs = %w(name address1 country) attrs.any?{|a| send “#{a}_changed?”} end end 终端OutPut => Booting […]

在密码重置期间,对Devise模型中的某些成员进行跳过validation

我的用户(设计)模型还有姓名,城市,国家,电话会员。 在创建注册页面 – 我validates_presence_of city, nation, phone, name, email, :on => :create _存在validates_presence_of city, nation, phone, name, email, :on => :create 在编辑注册页面中 – 我validates_presence_of city, nation, phone, name, :on => :update 现在,当我在forgot_password_page上设置一个新密码时,它会询问Devise::PasswordsController#update是否存在城市,国家,电话,姓名 我该如何处理选择性validation? 我猜它应该是这样的, validates_presence_of city, nation, phone, name, :on => :update, :if => :not_recovering_password def not_recovering_password # what goes here end

Rails,没有密码的Authlogic(注册确定.user_sessionvalidation失败)

我试图跳过Authlogic中用户的密码.. 多亏了SO,我找到了创建用户的解决方案 User acts_as_authentic do |c| c.validate_password_field = false c.validate_email_field = false end User_session仍然存在问题 – 任何时候我尝试登录我都会得到“密码不能为空” 如何绕过用户会话的validation?

将逗号转换为点作为分隔符

如何将用户数输入从11,5转换为11.5? 我尝试了以下作为回调: before_validation :comma_to_delimiter def comma_to_delimiter self.price.to_s.gsub(‘,’, ‘.’).to_f end 但这不起作用。 我希望用户能够输入他想要的任何分隔符 – 当前,当用户使用逗号而不是点时,应用程序会抛出错误。