我有两个模型,Thing
和Tag
。一件事有很多标签:
class Tag < ActiveRecord::Base
end
class Thing <ActiveRecord::Base
has_many :tags
end
我想覆盖ActiveRecord_Associations_CollectionProxy
的{{1}}方法,就像你做的那样:
proxy_association#concat
如何重写此方法?
答案 0 :(得分:0)
有一种广泛使用的方法来覆盖任何类方法,以及向类添加新方法或属性,但是并不总是建议乱用大类。
话虽如此,请执行以下操作:
一个。将此行添加到environment.rb
文件中:
Dir[File.join(Rails.root, "lib", "core_ext", "*.rb")].each {|l| require l }
然后,创建文件夹,如上所述
/root/to/your/app/lib/core_ext
在那里(或者你可能想到的任何其他地方 - 但为了保持简单和有条理)你可以添加你想要覆盖的任何东西。在你的情况下:
activerecord_tag.rb
class ActiveRecord::Associations::CollectionProxy
def concat
# do your magic
end
end
请注意,您必须重新启动应用程序服务器才能使更改生效。