如何扩展cakePHP项目,以便它可以在数据库中使用新字段?
我刚刚给出了一个CakePHP项目,我正在尝试扩展模型以包含一个新字段.我原来的开发人员已经不再可用了,我之前没有和CakePHP合作过.问题是所有其他字段都正确保存,但新字段被保存为空字符串.
数据库已扩展到包括新字段:
class_time varchar(30)
Run Code Online (Sandbox Code Playgroud)
我扩展了原始视图以支持新字段
<?=$form->input('release', array('type' => 'radio', 'legend' => false, 'div' => 'radio', 'options' => array('Agree' => 'Agree ', 'Disagree' => 'Disagree')))?>
<?=$form->input('class_time', array('type' => 'radio', 'legend' => false, 'div' => 'radio', 'options' => array('No preference' => 'No preference ', '6:00-8:30 P.M. ' => '6:00-8:30 P.M. ', '6:30-9:00 P.M.' => '6:30-9:00 P.M.')))?>
Run Code Online (Sandbox Code Playgroud)
就像我所知,该页面正确地呈现HTML
<div class="radio"><input type="hidden" name="data[Account][release]" id="AccountRelease_" value=""><input type="radio" name="data[Account][release]" id="AccountReleaseAgree" value="Agree"><label for="AccountReleaseAgree">Agree </label><input type="radio" name="data[Account][release]" id="AccountReleaseDisagree" value="Disagree"><label for="AccountReleaseDisagree">Disagree</label></div>
<div class="radio"><input type="hidden" name="data[Account][class_time]" id="AccountClassTime_" value=""><input type="radio" name="data[Account][class_time]" …Run Code Online (Sandbox Code Playgroud) 我正在开发salesforce功能,我们尝试将自定义类中的单个Web Service方法公开给"Partner",以便他们可以生成潜在客户.
类/方法已经创建/测试并按预期运行,因此我们正在开发实现.
我一直在研究Salesforce的所有Web服务文档和食谱配方,但我看到的所有内容都只涉及使用Enterprise或Partner WSDL文件,这会给他们更多的访问权限,我相信应该是必需的.
如果我导入从类本身生成的WSDL文件,我可以访问这些方法,但我似乎无法找到任何登录方式(使用他们的示例作为参考).
我这里有2个基本问题.
我在过去几个月一直致力于一个项目,最初是在4.1.6开发的,我现在正在尝试将其更新到4.2.0(我已经逐步测试了4.1.6和4.2.0之间的所有版本,以及所有的4.1.x版本都没有错误,只有当我转到4.2.0时才能看到我在这里描述的问题).
在这个应用程序中,有很多共享功能是所有模型共有的,所以我创建了一个抽象类,我的所有模型都继承自这个类.
class TrackableModel < ActiveRecord::Base
self.abstract_class = true
...
end
class User < TrackableModel
...
end
Run Code Online (Sandbox Code Playgroud)
Gemfile中唯一的变化是gem 'rails', '4.1.6'改为gem 'rails', '4.2.0'
更新过程遵循此处使用的说明,rake rails:update并按照同一文档第2部分中的升级步骤进行操作.
我用这个rake任务的默认值覆盖了所有冲突的文件,但之后审查了每个文件,并在我的修改中工作.
在更新之前,所有测试都通过,但更新后
130 runs, 0 assertions, 0 failures, 130 errors, 0 skips
Run Code Online (Sandbox Code Playgroud)
有错误
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect table name '': SHOW FULL FIELDS FROM ``
Error:
xxxTest#test_yyy:
NoMethodError: undefined method `each' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
该应用程序似乎无需更改用户体验即可运行.在我尝试执行测试之前,一切看起来都很好.
我无法让我的测试运行.
更新:
我忘了提到我在跑步
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32].
Run Code Online (Sandbox Code Playgroud)
另外,我一直在努力遵循执行路径.当它试图设置灯具时似乎失败了.它正在经历一个循环,它正在构建表的schema_cache.它查询schema_migrations和我的第一个自定义表"customers"(在此调用期间,它迭代此表上的每个似乎成功的列).
在接下来的电话中
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.columns(table_name#String)
Run Code Online (Sandbox Code Playgroud)
table_name的价值是零
不幸的是,我仍然足够新的ruby/rails我很难找到table_name值(schema_migrations,customers,nil,...)实际设置的位置.
有人可以帮助指出表格列表的来源,即构建schema_cache吗?