红宝石在轨道上
我正在研究连接到SQL Server 2008数据库的Ruby 1.8 / Rails 2.1应用程序。
当我尝试使用find_by_CompanyCode
方法时,ActiveRecord返回一个NoMethodError。 然而,从下面你可以看到表格存在并且有问题的方法。
不知道我失踪了什么..任何帮助将不胜感激
编辑:仅当我运行IvantageEmployee.first时,只有以“代码”结尾的字段才会出现..从视图中发生错误。 将完全相同的代码移动到控制器,代码按预期工作。
eval @goal.organization_type.employee_class + ".find_by_#{@goal.organization_type.employee_field_code}('#{@goal.specifier}').#{@goal.organization_type.employee_field_description}"
>> IvantageEmployee.first.CompanyCode => "GAI" >> IvantageEmployee.find_by_CompanyCode('GAI') NoMethodError: undefined method `find_by_CompanyCode' for IvantageEmployee(Table doesn't exist):Class from /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1613:in `method_missing_without_paginate' from /usr/lib/ruby/gems/1.8/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb:170:in `method_missing' from (irb):7 >>
一些更多的信息。 该表有几个字段。 我正在努力的是CompanyCode,但它也有RegionDescription。
请注意以下控制台输出。 find_by_RegionDescription起作用; find_by_CompanyCode不起作用。 另外,当我输出这个类时,CompanyCode不会出现,但是RegionDescription不会不知道为什么ActiveRecord会丢失表中的字段
>> IvantageEmployee.find_by_RegionDescription 'GAI' ### Finding method find_by_RegionDescription => nil >> IvantageEmployee.find_by_CompanyCode 'GAI' ### Finding method find_by_CompanyCode NoMethodError: undefined method `find_by_CompanyCode' for IvantageEmployee(Table doesn't exist):Class from /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1614:in `method_missing_without_paginate' from /usr/lib/ruby/gems/1.8/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb:170:in `method_missing' from (irb):9 >>
你需要使用蛇案而不是骆驼案例:
IvantageEmployee.find_by_company_code('GAI')
红宝石的惯例是使用骆驼案件和蛇案件的方法。 Rails遵循这个惯例(应该如此),所以你可以认为它动态创建的任何方法都是蛇的情况。
链接地址: http://www.djcxy.com/p/49729.html上一篇: ruby on rails