[英]Monkey patching and callback error
我在Rails 4应用程序中使用了两个gems: acts_as_tenant和simple_hashtags 。
如果一个租户上存在#标签,则不会为另一个租户重新保存它。 所以我想重写find_or_create_by_name和find_by_name方法。
为此,我还需要覆盖parsed_hashtags方法 ,但要使其被我的应用使用,还需要包含回调
before_save :update_hashtags
我有一个初始化程序 ,我最初使用它来将多租户系统用作标签(因此,tenant_id将自动保存)。 我添加了方法,但是当尝试覆盖回调时,我遇到了麻烦。
如果像主旨中那样使用扩展ActiveSupport :: Concern,则会收到此错误,并且无法启动我的应用程序。
lib/active_support/concern.rb:126:in `included': Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
from /Users/schatteleyn/subarashi/config/initializers/hashtags.rb:16:in `<module:Hashtaggable>'
from /Users/schatteleyn/subarashi/config/initializers/hashtags.rb:14:in `<module:SimpleHashtag>'
from /Users/schatteleyn/subarashi/config/initializers/hashtags.rb:1:in `<top (required)>'
如果我使用该版本
def self.included(base)
base.class_eval do
before_save :do_something
end
end
我收到此错误,可以启动我的应用程序,但是在任何页面上都收到错误。
undefined method `before_save' for HashtagConcern:Module
我很茫然,这是我能找到的仅有的两个解决方案,而且我似乎无法使它们起作用。 还有其他方法可以在模块中使用回调吗? 或者,也许是另一种解决按姓名和房客查找问题的方法?
为了使simple_hashtag能够识别租户,只需覆盖Hashtag模型的验证即可,例如:
SimpleHashtag::Hashtag.clear_validators!
module SimpleHashtag
class Hashtag < ActiveRecord::Base
acts_as_tenant :tenant
validates :name, :uniqueness => { :scope => :tenant }
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.