配置Rails应用程序以使用现有数据库

时间:2012-12-16 15:14:26

标签: mysql ruby-on-rails activerecord naming-conventions

我有一个新项目正在进行现有的网站和一个mysql后端。现在,现在的网站是用PHP编写的(没有框架,哎哟),mysql表不遵循任何约定。例如,表名并不总是复数,每个表的唯一标识符并不总是被称为id,而是类似c_id,有时没有created_at和updated_at的时间戳字段,如果有,则为有一个不同的名字。

现在我想在Rails中为访问同一数据库的网站构建一个管理面板。我有两个选择:

      
  1. 更改数据库以遵循rails约定并相应地修改php应用程序和所有查询
  2.   
  3. 以某种方式告诉Rails它将`c_id`视为`id`,将单数名称视为复数名称等。
  4. 当然,第一种选择在技术上是可行的,但可能是一个巨大的痛苦。这就是为什么我肯定更喜欢第二个选项,并想知道每个模型是否有可能告诉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
    

    这只是伪代码,但你明白了。这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

没有什么比你建议的更好,但你可以随意给你的模特/专栏/协会打电话。

class User
  set_table_name 'user' # instead of default "users"
  set_primary_key :c_id # instead of default "id"
end