CFWheels:暂时关闭validatesPresenceOf()

时间:2016-03-30 14:56:59

标签: cfwheels

我有一个模型,我使用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>

上面,我使用cfwheel验证来检查use是否使用id提交选项值而不是null值。所以我在这里使用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;
}

1 个答案:

答案 0 :(得分:0)

您可以尝试根本不进行验证(使用模型)

http://docs.cfwheels.org/v1.4/docs/save

使用save()的模型类函数,例如create()updateAll(),使用默认为validate的{​​{1}}参数。您可以将其设置为true并手动执行其他验证。