2013-08-12 14 views
9

私は既に別のプロジェクトから作成されたテーブルを持っています。それらの名前はaaa_bbb_ccc_dddのようにフォーマットされています(すべて非複数で、一部の部分は慣用語ではありません)。 thisを読んで、データベースからスキーマを作成しました。しかし今、私は実際のモデルを作る必要があります。私はRMREを見てきましたが、私のテーブルにActiveRecordの規約を適用し、名前を変更しました。他のアプリはそれらのテーブルに依存しているので、やりたくないのです。Rails:既存のテーブルからモデルを作成しますか?

既存のテーブルからモデルとスキーマを自動的に作成する最適な方法は何ですか?

答えて

16

これが本当のアプリでどのように動作するかわからないだけ理論、:

にテーブルaaa_bbb_ccc_dddため、たとえば、あなたがモデルAaaBbbを作成しますし、あなたにこのモデルをマッピングし、ActiveRecord条約が必要と名付けmodelsを作成するには表:

class AaaBbb < ActiveRecord::Base 
    self.table_name = "aaa_bbb_ccc_ddd" 
end 

以上のヒト例:

class AdminUser < ActiveRecord::Base 
    self.table_name = "my_wonderfull_admin_users" 
end 

今、あなたはあなたのようなURLがあります意味のルートにリソースとしてAaaBbbがあるでしょう:

.../aaa_bbb/... 

を、あなたは、URL内のテーブル名の名前を使用したい場合、私はあなたがルートを書き換えることができると思います:

get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"

もう一度、あなたを助けるかもしれない理論。私はまだそのようなケースで作業していないが、これから始めるだろう。


編集

にデータベースからモデルの作成を自動化:

https://github.com/bosko/rmre

が、私は、これはあなたが持っているだろう奇妙な名前のレール規則によってモデルを作成すると思いますあなたのアプリでリソースとして使用するそれは強制ではないでしょう https://github.com/wnameless/rare_map


私はSOの場合には、テーブル名と異なるモデル名を使用する上で見つかった良いテンプレート:

class YourIdealModelName < ActiveRecord::Base 
    self.table_name = `actual_table_name` 
    self.primary_key = `ID` 

    belongs_to :other_ideal_model, 
    :foreign_key => 'foreign_key_on_other_table' 

    has_many :some_other_ideal_models, 
    :foreign_key => 'foreign_key_on_this_table', 
    :primary_key => 'primary_key_on_other_table' 
end 
+1

schema.rbから自動化する方法はありますか?私は10列~20列のテーブルを持っています。可能であれば、手作業で名前と属性をコーディングする必要はありません。 – Derek

+0

の場合は、テーブルのみを気にして、そのカラムをそのまま使用してください。私はあなたがこのdbで動作する他のアプリに影響を与えずに何とかカラムを変更できるかどうかはわかりません。自動化について私は何か有用なものが見つかった場合、試合は..私の答えを更新すると思います。 – rmagnum2002

+0

ああ、私は列名を変更することを考えていませんでした。私がモデルファイルを持っていなくても、私は後ろのものをやっているからです。だから、私は 'attr_accessible'を含むすべてをタイプする必要がありますので、私は自動的にモデルコードを生成したいものです。 – Derek

1

代替ソリューションあなたは既存のテーブルの何かを変更します。

関連する問題