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

wuwx · April 30, 2015 · Last by wuwx replied at May 02, 2015 · 1990 hits

一个数据表名为: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 了?

支不支持? 当然支持。

靠不靠谱? 当然不靠谱。

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

#5 楼 @kgen 求教方法

@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") }

让大家见笑了……

You need to Sign in before reply, if you don't have an account, please Sign up first.