我搜索了4天关于这个问题,我在ActiveRecord和使用唯一性验证方面遇到了一些问题。我无法在控制台或测试中创建至少包含一个唯一性验证的模型。但是,我可以使用rails服务器(API)创建对象。
这让我发疯了!这是从我把Rails3项目升级到Rails4开始的。
class ContainerType < BaseModel
has_many :containers, :inverse_of => :container_type, :dependent => :restrict_with_exception
validates :name, :length => { :minimum => 1, :maximum => 25 },
:presence => true,
:uniqueness => true
end
< code>BaseModel是一个抽象,包含一些所有模型通用的< code>include。
class BaseModel < ActiveRecord::Base
self.abstract_class = true
include [...]
end
< code > test = container type . last . dup
ContainerType Load (0.7ms)选择“container_types”。*从“容器_类型”开始按“容器_类型”排序。“id”desc限制1
<代码>
<code>test.save
(0.3ms)BEGIN
ContainerType存在(0.4ms)SELECT 1 AS one from"container_types"LIMIT 1
(0.3ms)ROLLBACK
ActiveRecord::记录无效:验证失败:名称已从 /home/dev/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.1.15/lib/active_record/validations.rb:57中获取
:在'保存!'
对于有效的容器类型:
ContainerType.delete_all
ContainerType.create!(name: 'my container type 1 !')
(0.3ms)BEGIN
ContainerType存在(0.4ms)SELECT 1 AS one from"container_types"LIMIT 1
(0.3ms)ROLLBACK
ActiveRecord::记录无效:验证失败:名称已从 /home/dev/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.1.15/lib/active_record/validations.rb:57中获取
:在'保存!'
您可能注意到验证的选择请求没有条件。我确信这与ActiveRecord或不兼容的宝石有关,但我找不到原因....
其他测试 :
container_type = ContainerType.where(name: 'my container type 1 !').first_or_create
容器类型加载(0.6ms)选择container_types。*从"container_types"所在位置"container_types"。"名称"='我的容器类型1!'由"container_types"订购。"id"ASC LIMIT 1
(0.1ms)BEGIN
容器类型存在(0.3ms)选择1作为一个从"container_types"LIMIT 1
(0.2ms)回滚
p container_type.inspect
<代码> " #
测试
经过一些调查,我尝试了:-在所有before_*回调上添加< code > return true -创建一个用于唯一性验证的自定义验证器-我生成一个支架模型来检查它是否与我的泛型includes相关。
它似乎与models属性有关,随着rails更新,我将StrongParameter添加到了控制器中。但模型可能仍在使用某种受保护的属性遗迹。
好吧,我的实习生发现了为什么它不起作用,它来自项目中的一个monkey_patch。从初始值设定项加载的库正在重写ActiveRecord::Relation类。。。
问题内容: 在mysql表中,我有: ID,名称,城市,日期,状态 我想从“信息”中选择所有名称 好吧,结果是它返回了所有条目。我想回显所有没有重复的条目。 说:在原始的“名称”下,我们已经将名称“ John”插入了10次。 我只想回声一次。这可能吗? 问题答案: 很简单: SQL关键字可以解决问题。
本文向大家介绍yii2 从数据库验证唯一值:唯一验证,包括了yii2 从数据库验证唯一值:唯一验证的使用技巧和注意事项,需要的朋友参考一下 示例 如果输入现有值,某些人会遇到有关无法显示错误消息的问题。例如,我不允许用户使用现有电子邮件进行注册。 视图 控制者 模型
我有一个设置为接收来自WooCommerce的网络钩子的Rails应用程序。具体来说,我正在寻找创建订单的时间。我已经测试并验证了它在我protect_from_forgery时是否有效,除了创建。现在我正在尝试通过验证网络钩子来保护我的应用程序。WooCommerce的留档声明在请求标头中传递以下秘密: 秘密:一个可选的密钥,用于生成请求正文的HMAC-SHA256哈希,以便接收者可以验证Web
问题内容: laravel 4文档提到了唯一的字段验证。他们在这里说明了如何在唯一验证中包含where子句。唯一表的单个WHERE子句,例如: http://laravel.com/docs/validation#rule-unique 现在,我假设这样做是这样的: 然后检查此查询是否返回结果,如果没有通过验证器。 所以我想知道是否有一种方法可以添加更多的where子句?如果是这样怎么办? 问题答
问题内容: 我有一个laravel 模型,该模型在和上具有唯一的验证规则。在我的存储库中,当我更新模型时,我将重新验证字段,以使所需的规则验证没有问题: 测试失败 有没有办法优雅地解决这个问题? 问题答案: 将当前正在更新的实例的追加到验证器。 传递实例的来忽略唯一的验证器。 在验证器中,使用参数来检测您是否正在 更新 或 创建 资源。 如果进行更新,则强制唯一规则忽略给定的id: 如果创建,请照
问题内容: 我正在尝试将API查询输入python。命令行 提供一些json输出。myToken是一个十六进制变量,始终保持不变。我想从python进行此调用,以便我可以遍历不同的id并分析输出。有任何想法吗?在需要身份验证之前,我已经使用urllib2进行了此操作。我也查看了请求模块,但无法弄清楚该怎么做。 非常感谢。 问题答案: 该请求包有一个用于HTTP请求的一个非常好的API,加入了自定义