Tag: validation

我收到错误语法错误,意外$ end,期待keyword_end

我是第一个ruby,所以当我按照指南(http://guides.rubyonrails.org/getting_started.html)时,我得到的错误如下: 在2012-06-07 17:22:36 +0900开始获取127.0.0.1的“/ questions” SyntaxError(/Users/sookcha/Desktop/Dev/CSap/app/models/question.rb:3:无效的多字节字符(US-ASCII)/Users/sookcha/Desktop/Dev/CSap/app/models/question.rb: 3:语法错误,意外$ end,期待keyword_endvalidation:name,:presence => true ^):app / controllers / questions_controller.rb:2:in” 呈现/Users/sookcha/.rvm/gems/ruby-1.9.3-p125/gems/actionpack-3.2.5/lib/action_dispatch/middleware/templates/rescues/_trace.erb(3.1ms)呈现/用户/ sookcha / .rvm / gems / ruby​​-1.9.3-p125 / gems / actionpack-3.2.5 / lib / action_dispatch / middleware / templates / rescues / _request_and_response.erb(1.1ms)呈现/Users/sookcha/.rvm/gems/ruby救援/布局中的-1.9.3-p125 / gems / actionpack-3.2.5 / lib / action_dispatch / middleware / templates / rescues / diagnostics.erb(10.7ms) […]

validationhabtm关联的长度而不保存

我有一个与组有HABTM关系的用户模型。 我不希望用户能够在5个以上的组中,因此想要validationHABTM关系的长度。 在编辑用户页面上,我有一个复选框列表,用户可以在其中选择他们想要的组(我正在使用formtastic作为表单)。 在我的用户控制器中我打电话: @user.update_attributes(params[:user]) 这导致rails自动更新关联。 在我的用户模型中,我有以下内容: def validate if self.groups.length > 5 self.errors.add(:groups, “cannot have more than 5 groups”) end end 这导致表单validation失败,但update_attributes调用已更新数据库以反映对关联组的更改。 这样,每次用户单击“保存”按钮时,即使记录无效,也会保存其组关联。 解决这个问题的最佳方法是什么? 我想也许validation需要在组模型而不是用户模型上,这会起作用吗? 理想情况下,我想更新关联的组而不保存记录,进行validation,然后保存记录。

Railsvalidation未在嵌套模型上运行

我在Rails 3.2.8和Ruby 1.9.3上。 我无法弄清楚为什么没有运行嵌套属性的validation或返回任何错误。 当我提交没有填写任何内容的表单时,我会为父模型(用户)收到错误,但不会为子模型(帐户)收到错误。 在我的下面的代码中,我有一个用户模型has_one owned_account(帐户模型),以及一个属于所有者的帐户模型(用户模型)。 Account模型具有子域字符串的文本字段。 看来,当我提交表单而不包含子域字段时,帐户模型上的validation根本不会运行。 关于如何在此处获得validation的任何想法? 提前感谢任何帮助或指示。 user.rb class User ‘Account’, :foreign_key => ‘owner_id’ validates_associated :owned_account accepts_nested_attributes_for :owned_account, :reject_if => proc { |attributes| attributes[‘subdomain’].blank? } end account.rb class Account ‘User’ validates :subdomain, :presence => true, :uniqueness => true, :format => { …some code… } end new.haml = form_for @user do |f| […]

嵌套模型错误消息

我正在使用Ruby on Rails 3.0.9,我正在尝试validation嵌套模型。 假设我为“main”模型运行validation并为嵌套模型生成一些错误,我得到以下结果: @user.valid? @user.errors.inspect # => {:”account.firstname”=>[“is too short”, “can not be blank”], :”account.lastname”=>[“is too short”, “can not be blank”], :account=>[“is invalid”]} 如何看待RoR框架会创建一个errors哈希,其中包含以下键: account.firstname , account.lastname , account 。 由于我想通过JavaScript(BTW:我使用jQuery)处理那些涉及CSS属性的错误键值对我在前端内容上显示错误消息,我想“准备”该数据并将这些键更改为account_firstname , account_lastname , account (注意:我用.替换. )。 如何将密钥值从例如account.firstname更改为account_firstname ? 而且, 最重要的是 ,我应该如何处理这种情况? 我正在尝试以“好”方式处理嵌套模型错误? 如果不是,这样做的常见\最佳方法是什么?

自定义Railsvalidation不向输入添加“field_with_errors”包装器

我正在使用一个需要一些自定义validation的表单的Rails 4站点。 但是当validation标准失败并显示错误消息时,我正在检查的输入字段没有给出field_with_errors包装器。 正在validation的所有其他字段正确地获取包装器,但它们的validation是对每个属性的简单存在检查。 如何使用自定义validation添加包装器? 附加说明:如果可能的话,我只想显示一次错误消息 – 但要突出显示这两个字段。 在我的模型中: validate :at_least_one_apply_method def at_least_one_apply_method if [self.apply_url, self.application_instructions].reject(&:blank?).size == 0 errors[:base] << ("Please provide at least one: Where to Apply or Applications Instructions.") end end 让我知道所需的任何其他信息。 谢谢!

Railsvalidation类型日期?

我想我可能在做梦,但我想我在某处读到你可以在保存之前validation对象属性的类型? 类似validates :transaction_date, :type => Date ,这将确保它的日期? 这在Rails 3.2中是否可行? 我试图在网上找到这方面的证据。 我已经看过rails api了 ,我正在通过ActiveRecord的支持 。

如何validationhas_many关系未更改

我有一个相当典型的Order模型, has_many Lines class Order < ActiveRecord::Base has_many :lines validates_associated :lines 订单完成后,不应该更改任何属性或相关行(尽管您可以将状态更改为未完成)。 validate do if completed_at.nil? == false && completed_at_was.nil? == false errors.add(:base, “You can’t change once complete”) end end 这样可以正常工作, 但是 ,如果添加,删除或更改关联的行 ,则不会阻止此操作。 在我的Line模型中,我有以下validation: validate do if order && order.completed_at.nil? == false errors.add(:base, “Cannot change once order completed.”) end end 这会成功停止正在修改的已完成订单中的行,并阻止将行添加到已完成的订单中。 因此,我还需要防止线路从已完成的订单中取出。 我在Line模型中试过这个: validate […]

在Paperclip中更改错误validation消息

在回形针中设置validation消息时,例如 validates_attachment_presence, :image, :message => ‘xxxx’ 自定义消息自动以字段名称为前缀,即使它已被:message消息覆盖。 你如何完全覆盖消息并使其完全自定义? 编辑:错字

Rails 3validationIPv4和IPv6格式

我知道IPv4和IPv6的validation格式。 但不确定如何将它们组合在一起,因此至少有一种格式应该是真的。 这是我的validation validates :src_ip_addr, :presence => true, :uniqueness => true, :format => { :with => Resolv::IPv4::Regex, :message => “Not an valid IPv4 format”} validates :src_ip_addr, :presence => true, :uniqueness => true, :format => { :with => Resolv::IPv6::Regex, :message => “Not an valid IPv6 format”} 如何将它们组合起来如果一种格式正确则validation应该有效。 仅当ipv4和ipv6格式不正确时才会失败。 谢谢。

如何在单表inheritance中运行子类的validation?

在我的应用程序中,我有一个名为Budget的类。 预算可以有多种类型。例如,假设有两个预算:FlatRateBudget和HourlyRateBudget。 两者都inheritance自预算class。 这是我到目前为止所得到的: class Budget < ActiveRecord::Base validates_presence_of :price end class FlatRateBudget < Budget end class HourlyRateBudget < Budget validates_presence_of :quantity end 在控制台中,如果我这样做: b = HourlyRateBudget.new(:price => 10) b.valid? => false b.errors.full_messages => [“Quantity can’t be blank”] 正如所料。 问题是STI上的“类型”字段来自params ..所以我需要做类似的事情: b = Budget.new(:type => “HourlyRateBudget”, :price => 10) b.valid? => true 这意味着rails在超类中运行validation,而不是在我设置类型后实例化子类。 我知道这是预期的行为,因为我正在实例化一个不需要数量字段的类,但我想知道是否还有告诉rails运行子类的validation而不是super。