[英]accessing instance methods inside a ruby/Rails class but outside an instance method
我正在尝试将活动Record对象的关联计数发送到redis-object gem
class Post > ActiveRecord::Base
has_many :comments
include Redis::Objects
value :redis_comment_count, :default => self.comments.count
end
PS:设置:default =>“ string”效果很好
但这是行不通的,因为代码中那个位置的self(它不在方法定义中)是指Post的类定义,而不是post实例本身。 我试图弄清楚这是否有可能做到。
我说得通吗
不幸的是,您似乎需要为保存评论设置保存回调的方法更长一些。 我浏览了gem,它似乎不支持传递proc以便以后调用(请参阅此处 )。
顺便说一句 :
除了您正在调用类方法而不是实例方法的事实之外,在加载类时也会对self.comments.count
进行评估,即在您调用该方法时:
value :redis_comment_count, :default => self.comments.count
# This becomes:
# value :redis_comment_count, :default => 1 # Example
并非每次redis-objects gem使用value_options[:default]
。
如果您的类不断被重载,则该值将不断被重新评估,就像开发环境的默认设置一样。 但是,在通常启用了cache_classes
的生产环境中,仅在Rails应用程序启动并加载模型时才会评估此值。
如果支持,则通过proc将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.