CFWheels - 记录未插入

时间:2012-04-12 17:12:04

标签: coldfusion cfc railo cfwheels

我是CFWheels和框架的新手。

我正在关注Wheels网站上的截屏视频: http://cfwheels.org/screencasts/

我完全遵循教程......唯一的区别是,他的桌子被命名为“人”,我的名字叫“用户”。我做了相应的更改,但保持其他一切相同。

他的单数是“人”,我的是“用户”。

这是我的“User.cfc”控制器中的插入代码:

<cfcomponent extends="Controller" output="true">

    <cffunction name="register">

        <cfset user = model("user").new() />

    </cffunction>

    <cffunction name="create">

        <cfset params.user['userUUID'] = createUUID() />
        <cfset params.user['userCreated'] = createODBCDateTime(now()) />
        <cfset params.user['userModified'] = createODBCDateTime(now()) />

        <cfset user = model("user").new(params.user) />
        <cfset user.save() />

    </cffunction>

</cfcomponent>

现在,我也在我的视图中使用表单助手等,如下所示:

<cfparam name="user" />

<cfoutput>

#startFormTag( action="create" )#

<fieldset>

    <legend>Register</legend>

    #textField( label="User Name http://#cgi.server_name#/user/", objectName="user", property="userName" )#
    #textField( label="Email Address", objectName="user", property="userEmail" )#
    #textField( label="Password", objectName="user", property="userPassword" )#
    #submitTag( value="Register" )#

</fieldset>

#endFormTag()#

</cfoutput>

非常简单吧?所以我无法理解它为什么不插入。它是否与命名我的CFC“用户”有关,还有一个名为“users”的表,我的单数名称设置为“user”?

当我提交表单时,没有错误。它执行得很好但是如果我查看数据库,则没有任何内容。

我想到的一件事......是......车轮甚至知道要查找哪些表?似乎没有任何解释。也许它只是找到了错误的表格?

非常感谢, 迈克尔


解决了!

大家好,只是对可能遇到此问题的其他人的更新。没有发生任何事情的原因是因为我的数据库表需要某些字段不为空。 CFWheels没有抛出任何错误。一旦我将值传递给这些字段就很好了;所以一定要检查一下!

希望有所帮助。

2 个答案:

答案 0 :(得分:2)

迈克尔,首先我建议您将控制器重命名为Users.cfc(复数)。

在Wheels(和Rails以及配置框架中的其他类似约定)中,模型是单数(User.cfc),而控制器和表是复数(Users.cfc)。你的代码看起来都很稳定,唯一突然出现的是你的控制器被称为“User.cfc”。

我在创建/更新控制器方法中可能做的一件事是这样的:

if (user.save()){
    flashInsert(success="The user was created successfully.");
    redirectTo(action="index");
} else {
    flashInsert(error="There was an error creating the user.");
    renderPage(action="new");
}

user.save()将返回一个布尔值,如果出现问题并且保存失败,则此条件允许您执行一些实际的错误处理/调查。

关于Wheels如何知道要查找哪个表的问题,Wheels按惯例执行此操作。 [解释它是如何工作的]它检查你的模型,并且对于每个模型,它将检查你的数据库中是否存在复数版本。因此,如果有一个名为“User”的模型,那么Wheels将期望有一个名为“Users”的表。

答案 1 :(得分:1)

迈克尔,

我对模型对象函数进行故障排除的第一步通常是转储结果allErrors()方法。尝试保存后立即尝试添加此行。

<cfdump var=user.allErrors() label="User Save Errors" abort />

MC