@arkadiy,事实上,我就在今天正在研究这个问题。
对于表名,我们当然有set_table_name http://apidock.com/rails/ActiveRecord/Base/set_table_name/class method:
class CamelCasedFoo < ActiveRecord::Base
set_table_name :CamelCasedTable
end
对于像主键这样的东西,我们有set_primary_key http://apidock.com/rails/ActiveRecord/AttributeMethods/PrimaryKey/ClassMethods/set_primary_key:
class CamelCasedBar < ActiveRecord::Base
...
set_primary_key "CamelCasedTableID"
end
并且应该可以将时髦的遗留列名别名为对 Rails 更友好的名称alias_attribute http://apidock.com/rails/Module/alias_attribute:
class CamelCasedBaz < ActiveRecord::Base
...
alias_attribute :preferred_delivery, :DeliveryFrequency
end
要记住的一件关键事情是要注意任何 ruby 或rails 的列名keywords http://oldwiki.rubyonrails.org/rails/pages/ReservedWords or 魔法字段名称 http://oldwiki.rubyonrails.org/rails/pages/MagicFieldNames.
Rails 似乎拥有所有元编程优点,可以让您处理遗留的数据库表名称和列。您可能希望阅读 Jonathan Hui 的博客文章“使用旧数据库的 Ruby on Rails 3 模型” http://jonathanhui.com/ruby-rails-3-model-working-legacy-database。您可能想看看安全属性 http://codingdaily.wordpress.com/2010/12/25/better-legacy-database-support-for-rails/ gem.