Tag: validation

Railsvalidation:将输入限制为特定值

我正在寻找“Rails Way”来编写一个validation,将可接受的输入值限制在预定的列表中。 在我的情况下,我只想接受值“-5”,“ – 2”,“+ 2”,“+ 5”和零。 但是,我认为这是一个普遍的问题:如何在Rails模型中预定义可接受的条目值列表? 谢谢!

Rails 3validation:presence => false

这是我期望的一个非常简单的问题,但我无法在指南或其他地方找到明确的答案。 我在ActiveRecord上有两个属性。 我想要一个存在,另一个是零或空字符串。 我该怎么做相同的:presence => false? 我想确保值为零。 validates :first_attribute, :presence => true, :if => “second_attribute.blank?” validates :second_attribute, :presence => true, :if => “first_attribute.blank?” # The two lines below fail because ‘false’ is an invalid option validates :first_attribute, :presence => false, :if => “!second_attribute.blank?” validates :second_attribute, :presence => false, :if => “!first_attribute.blank?” 或者也许有更优雅的方式来做到这一点…… 我正在运行Rails 3.0.9

rails在模型中validation值是否在数组内

我有一个表单,我传递一个名为 :type的字段 ,我想检查它的值是否在允许类型数组中,以便不允许 任何人发布不允许的类型 。 数组看起来像 @allowed_types = [ ‘type1’, ‘type2’, ‘type3’, ‘type4’, ‘type5’, ‘type6’, ‘type7’, etc… ] 我尝试过使用 validates_exclusion_of或validates_inclusion_of但它似乎不起作用

Rails模型validation器打破了早期的迁移

我在rails应用程序中有一系列迁移,其中包括以下步骤: 创建“用户”模型的基本版本 创建此模型的实例 – 系统中至少需要一个初始用户,以便您可以登录并开始使用它 更新“用户”模型以添加新字段/列。 现在我在这个新字段/列上使用“validates_inclusion_of”。 这在我的初始开发机器上运行良好,该机器已经有一个应用了这些迁移的数据库。 但是,如果我转到新计算机并运行所有迁移,则步骤2失败,因为validates_inclusion_of失败,因为迁移3中的字段尚未添加到模型类中。 作为一种解决方法,我可以注释掉“validation_…”行,运行迁移并取消注释,但这并不好。 更好的方法是重新排序我的迁移,以便在添加所有列之后创建用户(步骤2)。 我虽然是铁杆新手,所以我想我会问为什么处理这种情况的首选方法是:)

validation嵌套属性的存在

如何使用嵌套属性validation模型是否至少有一个关联模型? 这让我很生气,因为我确信我错过了一些简单的事情。 例如,我想要求List始终至少有一个Task。 class List :destroy accepts_nested_attributes_for :tasks, :allow_destroy => true end class Task < ActiveRecord::Base belongs_to :list end 我尝试了很多不同的选择。 1-向列表添加validation: def validate if self.tasks.length < 1 self.errors[:base] << "A list must have at least one task." end end 但是这仍然允许您删除现有列表的所有任务,因为在删除任务时,列表的validation在任务被销毁之前发生。 2-检查在before_save回调中是否有任何任务未标记为销毁 before_save :check_tasks private #look for any task which won’t be deleted def check_tasks for […]

来自嵌套/非嵌套和validation的rails中多个模型的最佳实践

注意:根据Brian的评论(从如何处理轨道forms的多个模型 )将其作为单独的问题发布 当模型既嵌套又非嵌套时,我正在尝试学习以单轨forms处理多个模型的最佳方法。 对于嵌套的,我发现这两个教程很有帮助 http://weblog.rubyonrails.org/2009/1/26/nested-model-forms http://railsforum.com/viewtopic.php?id=717 我的问题是: 对于非嵌套模型,如何处理第二个模型的多个条目? 只需运行一个循环,并使用fields_for? 在嵌套/非嵌套的情况下,当第二个模型有多个条目时,如何validation重复值? 例如,如果project是主要的,task是辅助(子)模型,并且用户为项目添加了多个任务,那么如何确保没有为该特定模型添加重复任务? 一种方法是循环文本值,并检查重复项。 有没有更好的方法,在对象级别,而不是字符串级别?

Rails 3:显示表单的validation错误(不保存ActiveRecord模型)

如果这是一个非常普遍和/或荒谬的问题,请道歉; 我发誓我已多次阅读文档,并且所有内容似乎都专注于ActiveRecord,以至于他们已经离开了除了创建或编辑模型数据之外的其他forms的路径。 例如,带有输入的表单可控制某些统计信息的提取和显示。 rails为validation此表单的用户输入提供了什么,不会调用save在任何记录上? 像: :email必须是电子邮件地址 :num_products必须是正整数 :gender必须是“M”或“F”之一 :temperature必须在-10到120之间 等等(大多数Web框架中标准的东西)…… Rails中有什么东西可以让我执行这个任意validation,还有一些查看帮助器来显示错误列表,或者是一切都与ActiveRecord相结合? 如果我在文档中忽略了这一点,请道歉,但这并没有真正涵盖它,至少就疲惫的眼睛所能说的那样。 划伤头 感谢Rob的回答,这就是我想出的。 我创建了一个实用程序类(恰当地命名为Validator ),它只是嵌入到我的控制器中,用于任何需要它的东西。 module MyApp class Validator include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming def initialize(attributes = {}) super attributes.each { |n, v| send(“#{n}=”, v) if respond_to?(“#{n}=”) } end end end 例如,现在在控制器中,只需定义一个内联类: class LoginController < ApplicationController class AuthenticationValidator “E-mail is a required field” […]

Rails 4:validationid或关联的存在之间的区别

如果我在模型中有’belongs_to’关联,我想知道validation关联之间的名义差异: class Topping < ActiveRecord::Base belongs_to :pancake validates :pancake, presence: true … 并validation关联的模型ID: class Topping < ActiveRecord::Base belongs_to :pancake validates :pancake_id, presence: true … 动机: 为煎饼分配顶部的一些代码在过去的某个时间停止了工作。 将validation从关联更改为id’修复’问题,但我想知道更深层次的原因。 (仅供参考,当进入代码时,煎饼有效且在数据库中,顶部适当地响应.pancake和.pancake_id 。推送操作符( pancake.toppings << topping )和手动分配并保存( topping.pancake = pancake; topping.save )因煎饼缺少validation错误而失败。)

inheritanceRails i18n子类中的validation错误消息

我明白了什么 假设我有一个方便的validation类,如: User {/regex/}, :message => :name_format end 在这种情况下,我可以使用i18n通过在/config/locals/en.yml包含以下内容来使错误消息可翻译: en: activerecord: errors: models: user: attributes: username: name_format: ‘has the way-wrong format, bro!’ 这很好,通常非常方便。 我想知道的是什么: 我的问题是:当我有从Userinheritance的子类时会发生什么: UserSubclassOne < User # extra stuff end UserSubclassTwo < User # extra stuff end … UserSubclassEnn < User # extra stuff end 现在的问题是Rails找不到翻译user_subclass_one.attributes.username.name_format 。 它抱怨说: translation missing: en.activerecord.errors.models.user_subclass_one.attributes.username.name_format 我希望Rails在UserSubclassOne中搜索字符串时会查找UserSubclassOne的层次结构,然后注意它何时获得“点击”,但是(除非我做了一些可怕的错误)显然不会发生了。 一个显而易见的解决方案是复制en.yml.en.errors.models中的user […]

Rails:错误接近表单中的特定字段

我试图将一些错误添加到导致错误的字段附近的表单,这是我如何做到这一点: Description Category 我想知道是否有更好的非重复性方法。 如你所见,我重复相同的事情,除非错误……对于每个领域。