假设我有一个用户模型。它有一个名为 status 的实例方法。状态不是关联。它不遵循任何活动记录模式,因为它是一个已经在生产中的数据库。
class User < ActiveRecord::Base
def status
Connection.where(machine_user_id: self.id).last
end
end
所以我这样做。
@users = User.all
首先,我不能急于加载状态方法。
@users.includes(:status).load
其次,我无法在用户数组中缓存该方法。
Rails.cache.write("user", @users)
status 方法永远不会被调用,直到它看起来像视图层。
缓存此方法的推荐方法是什么。
也许这个实例方法不是我想做的。我已经查看了范围,但它看起来不像我想要做的。
也许我只需要一个协会?然后我得到包含,我可以缓存。
但是关联可以处理复杂的逻辑吗?在这种情况下,实例方法是一个简单的查询。如果我在该实例方法中有复杂的逻辑怎么办?
谢谢你的帮助。