红宝石在轨道上

我正在研究连接到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

下一篇: Getting error in console when checking the record