rails属性名称camelcase问题

时间:2016-04-26 08:22:03

标签: ruby-on-rails ruby activerecord camelcasing

我有遗留的Sql Server数据库和Rails应用程序。列名 在数据库中都是PascalCase (FirstName, CustomerId...).

我正在寻找一种在Ruby和中使用underscore_casing的简单方法 PascalCasing在数据库中。我想在Rails中编写first_name 对于数据库中的FirstName列。

camelize和underscore会将字符串转换为所需的大小写

但我正在寻找更通用的东西: ActiveRecord::Base.camelize_table_column_names = true

像现有的一样 ActiveRecord::Base.pluralize_table_names

就像将rjs模板中的Ruby翻译成JavaScript cameCase一样 约定。

2 个答案:

答案 0 :(得分:3)

可能为所有已定义的列名设置别名吗?

column_names.each do |column_name|
  alias_attribute column_name.underscore, column_name
end

您可以将其添加到问题中,并在所有相关模型中包含该问题。

答案 1 :(得分:1)

我认为没有一个选项可以启用此类行为。毕竟,Rails遵循convention over configuration原则,但并非所有内部约定都是可配置的。

另一方面,您应该能够为所有列定义column aliases ,例如:

class Customer < ActiveRecord::Base
   alias_attribute :first_name, :FirstName
   # etc...
end

这样Rails就可以将下划线属性透明地“转换”为CamelCase属性:

Customer.where(first_name: "John")
# => SELECT `customers`.* FROM `customers` WHERE `customers`.`FirstName` = 'John'
相关问题