【发布时间】:2012-12-16 15:14:25
【问题描述】:
我有一个使用现有网站和 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
这只是伪代码,但你明白了。这样的事情可能吗?
【问题讨论】:
标签: mysql ruby-on-rails activerecord naming-conventions