我有三个 activerecord 模型:客户、访问和活动。
Customer has_many :visits
Visit belongs_to :customer
Campaign has_many :visits
访问模型跟踪特定客户每次访问网站、访问的页面、显示的广告以及最重要的是他们是否进行了购买。广告系列是客户在访问网站期间看到的一系列广告。每个活动持续 1 小时(每天 24 个活动)并且有很多访问。
我正在尝试做的是开发一些 activerecord 范围或类方法,使我能够识别“下次访问购买”。
例如,7 月 4 日当天的第四个活动有 100 次客户访问。我希望能够查看每个客户的下一次访问,并确定那些访问/客户在下一次访问时已经/进行了购买。我发现很难解决的是客户随后的访问并非都是在同一天,但我想确定“下一次访问”以及导致购买的那些。
我的设想是这样的:
Campaign.find(2232).next_visit.purchase #where next_visit and purchase are scopes
或者
Visit.find(5445).next_visit.purchase
我在访问模型中有一个购买标志,因此购买范围相当简单。
scope, :purchase, where(:purchase_flag => true)
同样基于Railscast #215,如果我在访问模型上创建此范围,则可以使用连接和合并将它们应用于客户和活动模型。
Campaign.joins(:visits).merge(Visit.purchase)
这是正确的方法吗?如果是这样,我如何定义我的 Next 范围,如果不是,你会建议什么作为替代方法。
更新:我得到了一些很好的回应。只是想知道普遍的共识是迪帕克的方法是正确的还是其他反应更可取。