【问题标题】:Why are Rails validations not working?为什么 Rails 验证不起作用?
【发布时间】:2013-05-27 20:50:06
【问题描述】:

我正在关注Rails guide 来创建一个非常普通的验证。我创建了一个工作正常的回调,但验证:

class Group < ActiveRecord::Base
  include ActiveModel::ForbiddenAttributesProtection

  validates :name, :presence => true

end

结果:

undefined method `  validates' for #<Class:0x007fa57b1a9e60>

这是带有以下 gemfile 的 Rails 3.2.13

来源'https://rubygems.org'

gem 'rails', '3.2.13'

gem 'pg'

group :assets do
  gem 'sass-rails'
  gem 'uglifier'
end

gem 'jquery-rails'
gem 'strong_parameters'
gem 'bootstrap-sass', '>= 2.3.0.0'
gem 'devise', '>= 2.2.3'
gem 'cancan', '>= 1.6.9'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'paperclip', '~> 3.0'
gem 'friendly_id', "~> 4.0.9"

group :test, :development do
  gem 'rspec-rails'
  gem 'factory_girl_rails'
end

【问题讨论】:

  • 如欲了解更多信息,请尝试validates_presence_of :name。另外,这是您模型的所有代码吗?你的attr_accessible/attr_protected 属性在哪里?
  • 这行得通,谢谢。我使用的是强参数,所以没有模型级别的白名单/黑名单。控制器管理允许的参数。
  • 啊,没想到。很高兴它对你有效。为了清楚起见,我将评论移至答案。

标签: ruby-on-rails validation activerecord ruby-on-rails-3.2


【解决方案1】:

使用validates_presence_of :name

【讨论】:

  • 为什么会这样? Rails 3.2 约定是 OP 已经拥有的。
  • 这行得通,谢谢。我使用的是强参数,所以没有模型级别的白名单/黑名单。控制器管理允许的参数。 – 瑞安W
  • 我使用 sscirrus,不确定为什么 3.2 约定不起作用。但是,继续 validates_presence_of。 @jason328 你是说它与 attr_accessible/protected 有关吗?我创建了一个使用它的新的 vanilla rails 应用程序,但仍然出现相同的错误。
猜你喜欢
  • 2017-07-03
  • 2018-11-26
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2012-02-02
相关资源
最近更新 更多