【问题标题】:How use a postgres database as if it were native to Rails如何使用 postgres 数据库,就好像它是 Rails 原生的一样
【发布时间】:2017-10-09 03:26:41
【问题描述】:
我是 Rails 世界的新手,我需要为 Rails 项目使用现有数据库,例如,如果我在 postgres 终端中添加它们,我有一个没有列 created_at 和 updated_at 的“游戏”表,rails 会将我的表格识别为对象(例如“游戏”)?或者我应该为我的数据库中的每个表生成模型?像对象一样获取所有表并从控制器中使用它们的正确方法是什么?
【问题讨论】:
标签:
postgresql
activerecord
ruby-on-rails-5
【解决方案1】:
正如评论中提到的,一个版本是使用某种逆向工程 gem,它会自动为您的数据库表生成模型,其中包含所有关联、外键等。
但如果您是 Rails 新手,我绝对建议您手动操作,原因如下:
那些宝石不会理解命名空间(我的一个可靠猜测),例如如果你有一个admin_users、admin_other_table、admin_suggestions 表,那么在 ruby 中最合理的类名应该是 Admin::User、Admin::OtherTable、Admin::Suggestion,但这些宝石无法理解这一点。
如果将模型命名为不同于表的名称更有意义(然后将正确的表映射为 self.table_name=,gems 将无济于事。
如果只需要以一种方式定义关联,那么您的模型中将包含大量无用的代码(如果您有“用户有许多外键为 author_id 的文章”也许您不需要user.articles 方法,但无论如何你都会得到它。
可能还有更多这样的案例。因此,我强烈建议您手动完成,这样您就可以完全控制所编写的代码类型。