Mongo Relations - 在模块中使用时的class_name

时间:2013-08-13 14:35:52

标签: ruby-on-rails mongodb relationships

首先,这是我的第一个问题,希望我能提供所有必要的信息。

我正在使用Rails 4,Ruby 2.0和MongoDB以及Mongoid gem。

我正在创建一个可用于各种类的模块。我尝试了以下但它似乎不起作用,我找不到任何关于如何正确设置它的信息,使用模块中的关系并分配class_name:

module Core
 module Versioning
    extend ActiveSupport::Concern

included do

   # *allows for tracking of various versions related to a root*
   has_many :versions, class_name: self.class.name,  inverse_of: :origin
   belongs_to :origin, class_name: self.class.name, inverse_of: :versions

end

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,使用ActiveSupport :: Concern的典型模块将是

require 'active_support/concern'

module M
  extend ActiveSupport::Concern

  included do
    has_many :versions, class_name: self.class.name,  inverse_of: :origin
    belongs_to :origin, class_name: self.class.name, inverse_of: :versions
  end

  module ClassMethods
    ...
  end
end

你就像这样使用它

class A < ActiveRecord::Base
  include M
end

然后,A类将与版本和原点相关联。也许你包括核心模块而不是版本控制?