我有一个模型,其中我使用validatesPresenceOf()检查表中是否存在id列。
<cfscript>
component extends="Model"
{
public function init()
{
validatesPresenceOf(property="id", message="error msg");
table(mytable);
}
}
</cfscript>现在,我的表中的id列是通过触发器自动生成的字段,因此除了下面的情况外,我实际上不需要查看id是否不为NULL。
<select name=data>
<option value=""></option>
<option value=data.id></option>
</select>上面,我使用check验证来检查用户是否提交了一个带有id的选项值,而不是空的值。因此,这里我使用validatesPresenceOf()函数来查看是否提交了id。
但是在另一个位置,我必须将数据保存到这个表中,我的代码如下:
data = model(tbl.others).new();
data.name = name;
data.save();上面的代码没有将记录插入到表中,因为id列上有validatesPresenceOf(),而且正如您所看到的,我没有在插入数据上设置id,因为它是表中的一个自动生成字段。
我的问题是有一个解决办法,也许我可以暂时关闭特定的id验证,或者我可以暂时验证id,然后删除该验证条件。
我尝试了以下方法,但不起作用:
public function custom_save(name)
{
automaticValidations(false);
data = model(mytable).new();
data.name = name;
automaticValidations(true);
return data;
}发布于 2016-03-30 23:56:46
您可以尝试根本不验证(使用模型)
http://docs.cfwheels.org/v1.4/docs/save
使用save()的模型类函数(如create()和updateAll() )使用缺省为true的validate参数。您可以将其设置为false,然后手动执行其他验证。
https://stackoverflow.com/questions/36312574
复制相似问题