【发布时间】:2022-11-22 04:13:45
【问题描述】:
我过去曾使用 Postgres 视图对数据的派生表示进行建模。
覆盖 ActiveRecord 的 readonly? 有助于实现它。
不幸的是,当习惯于大量使用时,视图的缺点是很难进行架构更改。
所以我想知道是否有办法将任意查询分配给模型并将其视为表?
编辑:对不起,我应该更清楚:
我想要的是通过名为“UserWithComments”的模型执行类似“给我所有加入他们的 cmets 的用户”之类的操作。我知道这个特定的例子可以通过 User.includes(:comments) 或类似的方式使用 ActiveRecords DSL 轻松实现。
如果查询变得更加复杂,ActiveRecord DSL 达到了它的极限,所以我可以只用我的 SQL 创建一个视图,然后使用一个引用该视图的只读模型。在某些情况下,创建视图是不可行的,所以我想知道如何创建一个名为 UserWithComments 的模型,该模型未链接到表或视图,而是具有某种带有 SQL 的配置选项,如 select <attributes> from users u left join comments c on c.user_id = u.id
【问题讨论】:
-
你是什么意思使查询只读?只有在您提供相应功能的情况下,用户才能对数据进行更改。
标签: ruby-on-rails ruby activerecord