最近在做專案時剛好碰上了一個 ( UNION ) 聯集的需求,於是順手寫了一篇簡單的文章給大家,希望能夠幫上有同樣問題的朋友 :)
若有任何的錯誤或需要改進的內容,也希望大家指正我一下。
http://bclee.logdown.com/posts/171284-how-to-implement-the-union-in-rails-orm
学习...union 似乎除了学的时候 一点都没用到了
但认为文中的例子不好,为什么不设计成 product 的 manager 也 tracking 这个 product?这样查询就退化 成 @user.tracking_products.ne(:manager_id, @user.id) 了?可以再用 scope 封装一下
@user.tracking_products.ne(:manager_id, @user.id)
@jasl 只是剛好想到這個例子作為範例,我也認同有些的程式碼其實是可從設計模型上解決的 :p
#2 楼 @bcmic 嗯嗯
我遇到一个场景,
scope :belong_to_self, ->(user, team_ids) where(" company_id = ? and (user_id = ? or team_id in (?) ) ", user.company.id, user.id, team_ids)
因为 or 会影响索引,所以我就用 union all 把 or 给拆开了,但是 这样就不能写成上面那个公用的 scope 了,比较麻烦,不知道有还有什么解决办法不
#1 楼 @jasl #2 楼 @bcmic
#4 楼 @TsingHan 啊 不清楚...不过很多时候麻烦都是跟设计有关所以....这个彻底了解设计才好说 - -