2016-04-26 24 views
3

私は従来のSql ServerデータベースとRailsアプリケーションを持っています。データベースの列名 は、私はRubyでunderscore_casingと、データベース内の PascalCasingを使用する簡単な方法を探していますrails属性名キャメルケースの問題

PascalCase (FirstName, CustomerId...).ですべてです。私はfirst_nameをデータベースのFirstName列の に書きたいと思います。

camelizeとアンダースコア必要なケースに文字列を変換します

が、私のような、より一般的な何かを探しています: ActiveRecord::Base.camelize_table_column_names = true

だけRJSテンプレートにルビーを翻訳するよう ActiveRecord::Base.pluralize_table_names

を既存のようにJavaScriptにcomeCase 大会。

答えて

1

このような動作に切り替えるオプションは1つありません。結局、Railsはconvention over configurationの原則に従いますが、すべての内部規約は設定可能ではありません。あなたが列、例えば、すべてのためにcolumn aliasesを定義にできるはずである一方

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

は、この方法でRailsは透過的に「翻訳」する必要があり、下線はものをキャメルケースに属性

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

定義されたすべての列名のエイリアスを設定することはできますか?

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

懸念事項にそれを追加し、関連するすべてのモデルにその懸念事項を含めることができます。

+0

+1ですが、懸念事項を含める際に若干の問題がある可能性があります。テーブル名がクラス名と一致しない場合、 'table_name'が設定された後に起こる必要があります。 – Slicedpan

+0

良い点。あなたはちょうど懸念にそのテーブル名ビットを追加することもできます。 –

関連する問題