Mysql Rails中列名的别名attriibute

Mysql Rails中列名的别名attriibute,mysql,ruby-on-rails,ruby,alias,Mysql,Ruby On Rails,Ruby,Alias,因此,我有一个数据库,它是为一个旧的php应用程序设置的,我无法触摸数据库的工作方式 然而,我在数据库中有一些列名,它们在Ruby中使用了一些限制性的词,比如“class” 所以为了让它工作,我使用了alias\u属性 但它不起作用。代码如下: class Contractor < ActiveRecord::Base set_table_name "contractors" alias_attribute :class_type, :class attr_accessible

因此,我有一个数据库,它是为一个旧的php应用程序设置的,我无法触摸数据库的工作方式

然而,我在数据库中有一些列名,它们在Ruby中使用了一些限制性的词,比如“class”

所以为了让它工作,我使用了
alias\u属性

但它不起作用。代码如下:

class Contractor < ActiveRecord::Base
  set_table_name "contractors"
  alias_attribute :class_type, :class
  attr_accessible :about, :alias, :business_entity, :business_logo, :business_name, :city, :class, :county, :created, :email, :founded, :metroarea, :nid, :phone, :state, :status, :street_address, :uid, :zipcode
end

最后一个只有在我删除alias_属性时才会出现,否则它与第一个错误相同

我认为您的问题在于您提供的别名“:class” 类是ActiveRecord方法之一 您可以通过运行此命令来查看它

Contractor.first.methods
定义这个别名只是以某种方式“覆盖”它,并中断rails操作,因此,有gem在做这项工作。 到目前为止,它工作得很好

1.9.3-p125 :003 > Contractor.where(:zipcode => "94111")
  Contractor Load (648.6ms)  SELECT `contractors`.* FROM `contractors` WHERE `contractors`.`zipcode` = '94111'
(Object doesn't support #inspect)
 =>
Contractor.first.methods