我有一个使用现有网站和 mysql 后端的新项目。现在,现在的网站是用 php 编写的(没有框架,哎呀),mysql 表不遵循任何约定。例如,表名并不总是复数,每个表的唯一标识符并不总是被调用id
,而是类似于c_id
,有时 created_at 和 updated_at 没有时间戳字段,如果有,它们有不同的名称。
现在我想在 Rails 中为网站构建一个管理面板,它将访问相同的数据库。我有两个选择:
- 更改数据库以遵循 Rails 约定并相应地修改 php 应用程序和所有查询
- 不知何故,告诉 Rails 它将把像 `c_id` 这样的东西当作 'id',将单数名称当作复数名称,等等。
当然,第一种选择在技术上是可行的,但可能是一个巨大的痛苦。这就是为什么我肯定更喜欢第二种选择的原因,并且想知道如果每个模型不遵循约定,是否有可能告诉 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
这只是伪代码,但你明白了。这样的事情可能吗?