Rails ActiveRecord 是否可以使用一个 Model 操作 2 个数据表

wuwx · 2015年04月30日 · 最后由 wuwx 回复于 2015年05月02日 · 1996 次阅读

一个数据表名为:forum_forum 另一个表名为:forum_forumfield

他们之间其实是 has_one 与 belongs_to 的关系

我只想启用一个 Forum Model,不想再引入一个 ForumField Model 想直接使用一个 Forum Model 来进行读写操作 不知道是否靠谱,求支援……

就像用筷子一次夹两个丸子一样。

#1 楼 @rei 我想用一根筷子直接把丸子捅起来,就好像糖葫芦……

在 Model 内直接执行 sql:

ActiveRecord::Base.connection.execute(sql)

#3 楼 @rei 那。。。那我岂不是不能愉快地使用 CRUD 了?

支不支持? 当然支持。

靠不靠谱? 当然不靠谱。

就像理论上把一个项目的所有代码都写到一个文件中,也是可以的,但是现在应该没人会这么做了。

@wuwx 就当没有 AR,前辈们在没有 AR 的时候如果遇到这种需求咋办呢?

forum 里多加一个字段不就行了

#8 楼 @chaucerling Discuz 的数据库,暂时不能改数据库啊……

如果是 has_one 和 belongs_to...那不是本来就是一张表吗 只是可能后者太大要分离 我记得 Nested Model Form 可以比较方便的处理 但是不能没有 model

新建一个虚拟 Form,把两个表 Form 包装起来 https://github.com/makandra/active_type

视图啊

对于不太常用的 has_one 是可以的,把 belongs_to 的部分当作一个 hash attribute 就可以了。不过索引就差点。

看明白了,楼主这是想把现有 PHP 的数据库同时给 Rail 使用。一套界面(两个应用 render)、一个数据库、两个不同应用。我只能说这是瞎折腾。

rails_sql_views, citier 也许有点用吧

我现在这么干……

default_scope { select("forum_forum.*, forum_forumfield.*").where(status: 3, type: :sub).joins("LEFT JOIN forum_forumfield ON forum_forum.fid = forum_forumfield.fid") }

让大家见笑了……

需要 登录 后方可回复, 如果你还没有账号请 注册新账号