2015-05-29 54 views
0

我在Rails 4應用程序中使用兩個寶石:acts_as_tenantsimple_hashtags猴子修補和回調錯誤

如果某個承租人存在哈希標籤,則不會爲其他承租人重新保存哈希標籤。所以我想覆蓋find_or_create_by_name和find_by_name方法。
對於這一點,我還需要覆蓋parsed_hashtags method,而是使之使用我的應用程序,我也需要有回調

before_save :update_hashtags 

我有一個initializer,我第一次用的多租戶系統採取行動井號標籤(所以tenant_id自動保存)。我添加了這些方法,但是當試圖覆蓋回調時,我碰到了一堵牆。

如果我使用擴展ActiveSupport ::關注像在要點,我得到這個錯誤,無法啓動我的應用程序。

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 

我是處於虧損狀態,這些是僅有的兩個解決方案,我可以找到,我似乎不能讓他們的作品。 有沒有其他的方式來使用模塊中的回調?或者,也許另一種方式來解決名稱和租戶的問題?

回答

1

爲了獲得simple_hashtag是租戶感知,只是覆蓋包括hashtag模型的驗證,比如像這樣:

SimpleHashtag::Hashtag.clear_validators! 
module SimpleHashtag 
    class Hashtag < ActiveRecord::Base 
    acts_as_tenant :tenant 
    validates :name, :uniqueness => { :scope => :tenant } 
    end 
end