0

既存の Web サイトと mysql バックエンドで新しいプロジェクトを進めています。現在、Web サイトは現在のように php で記述されており (フレームワークなし、痛い)、mysql テーブルは規則に従っていません。たとえば、テーブル名は常に複数形であるとは限らず、テーブルごとの一意の識別子は常に呼び出されるとは限りませんidが、のようなものc_idです。created_at と updated_at のタイムスタンプ フィールドが存在しない場合があり、存在する場合は別の名前が付けられます。

今度は、同じデータベースにアクセスする Web サイトの管理パネルを Rails で作成したいと考えています。2 つのオプションがあります。

  1. Rails の規則に従うようにデータベースを変更し、それに応じて php アプリとすべてのクエリを変更します。
  2. `c_id` のようなものを `id` として扱い、単数形の名前を複数形の名前として扱うようにどうにかして Rails に伝えます。

もちろん、最初のオプションは技術的には実現可能ですが、おそらく非常に面倒です。これが、私が間違いなく 2 番目のオプションを好む理由であり、各モデルが規則に従わない場合に代わりに処理方法を Rails に伝えることができるかどうか疑問に思います。私の考えでは、これは次のようになります。

class ModelClass < ActiveRecord::Base
  treat :user, as: :users
  treat :user.u_id, as: :id
  treat :user.created, as: :created_at if exists
  treat :user.last_update, as: :updated_at if exists
end

これは単なる疑似コードですが、アイデアはわかります。このようなことは可能ですか?

4

1 に答える 1

2

あなたが提案しているもののようなものは何もありませんが、あなたはあなたのモデル/列/協会を好きなように自由に呼ぶことができます。

class User
  set_table_name 'user' # instead of default "users"
  set_primary_key :c_id # instead of default "id"
end
于 2012-12-16T15:18:41.030 に答える