这与通常的基于 AREL 或 Sequel gem 的模型有点“开箱即用”,所以我正在寻找一些专家指导。
我在我的应用程序之外有一个遗留(事务)表,每次部署某些东西时都会更新。Deployments
看起来像这样:
DEPLOY_ID | APP_DEPLOY_NAME | DEPLOY_TYPE | DOMAIN | DEPLOY_ENV | ...
1 | adn | dta | ruby | dev1 | ...
2 | adn | dta | ruby | dev1 | ...
* 3 | adn | dta | ruby | dev1 | ...
* 4 | adn | dta | ruby | dev2 | ...
* 5 | adnb | dta | ruby | dev1 | ...
上面的标记线代表DEPLOY_ID
每个唯一APP_DEPLOY_NAME + DEPLOY_TYPE + DOMAIN + DEPLOY_ENV
条目的最高值。从概念上讲,这些是由这四个值定义的复合键的最新部署。
在 SQL 中,我可以轻松地使用自联接创建此视图:
select deployments.* from
-- deploy_max
(select max(DEPLOY_ID) as DEPLOY_ID from DEPLOYMENTS
group by APP_DEPLOY_NAME, DEPLOY_TYPE, DOMAIN, DEPLOY_ENV) deploy_max
join DEPLOYMENTS as deployments on
deploy_max.DEPLOY_ID = deployments.DEPLOY_ID
order by deployments.APP_DEPLOY_NAME asc,
deployments.DEPLOY_TYPE asc,
deployments.DOMAIN asc
(可能有更好的写法,但它显示了我正在尝试做的事情)
但是,这失去了查询链接的好处......即我似乎无法得到类似的东西: latest.filter(:APP_DEPLOY_NAME.like('%adn%'))
。
其他皱纹:
- 我不拥有数据库,所以我无法添加视图。
- 如果我创建自己的表,我需要担心数据刷新(事务表是实时的并且会不断更新)。
有任何想法吗?