有没有方法可以覆盖ActiveRecord关联提供的方法之一?
例如,我有以下典型的多态has_many:through关联:
class Story < ActiveRecord::Base
has_many :taggings, :as => :taggable
has_many :tags, :through => :taggings, :order => :name
end
class Tag < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :stories, :through => :taggings, :source => :taggable, :source_type => "Story"
end
如您所知,这会将整个关联方法添加到Story模型中,例如标签,标签<
我该如何覆盖这些方法之一?特别是tags <
def tags<< *new_tags
#do stuff
end
调用时会产生语法错误,因此显然不是那么简单。
最佳答案
您可以使用带有has_many
的block来扩展与方法的关联。请参见注释“使用块扩展您的关联” here。
覆盖现有方法也可以,但是不知道这是否是一个好主意。
has_many :tags, :through => :taggings, :order => :name do
def << (value)
"overriden" #your code here
super value
end
end