【发布时间】:2010-07-22 01:09:46
【问题描述】:
我已经为ActiveRecord::Base 覆盖了find 方法,效果很好,现在我可以很好地自定义它了。
def self.find(*args)
# my custom actions
super(*args)
end
然后
Album.find(1) #=> My custom result
但现在我想覆盖这个:
Album.first.photos
我不确定我应该重写什么方法来完成工作...... 我正在考虑专门针对关联查询的东西,但我不确定:(
我需要对建议动态类的 'ActiveRecord::Base' 采取行动,因此我无法为此创建方法 photos,而是创建一个可以在我尝试的所有模型中交互的方法。
非常感谢
更新
为了更好地解释我想要实现的目标:
创建一个可插入的 ruby gem 用于 rails,该 gem 可以简单地从数据库中获取 ID 结构,并将其即时转换为缩短 ID,就像 bit.ly 系统一样。但这是即时完成的,只需向您的模型声明has_shortened :id,然后所有接口和查询都返回例如DH3而不是12,例如,我已经设法让这个工作了这一点需要处理关联。
关注 gem url http://github.com/ludicco/shortener 以便您可以查看它,如果您认为这是一个不错的想法,请随时提出您可能需要实施的想法。
干杯
【问题讨论】:
-
例如,您想用它做什么?我想不出有什么好的理由……如果你写出来,也许它会提出一个好的解决方案。
-
所以你确实有一个
has_many :photos,但是你需要干预这个收藏吗?你具体需要做什么?以某种方式限制结果集?计算集合被访问的次数?您能否提供更多信息让我们一起思考,并可能提供其他替代解决方案。
标签: ruby-on-rails ruby collections associative-array