Rails中的活动记录关联

时间:2015-06-03 13:18:33

标签: ruby-on-rails activerecord associations model-associations

我有一个模型Persons::Names::Log和另一个模型Persons::Address。我想在LogAddress之间创建关联。可能吗?我应该在两个模型文件中写什么语句?

Edit

我希望有一个像Persons::Names::Log.last.address

这样的关联

2 个答案:

答案 0 :(得分:1)

来自http://guides.rubyonrails.org/association_basics.html#controlling-association-scope

  

要将模型与不同命名空间中的模型相关联,您必须这样做   在关联声明中指定完整的类名。

以下是与给定类名称关联的示例:

module Persons
  module Names
    class Log
      has_one :address, class_name: "Persons::Address"
    end
  end

  class Address
    belongs_to :log, class_name: "Persons::Names::Log"
  end
end

答案 1 :(得分:1)

使用范围指定类名:

    # app/persons/names/log.rb
    module Persons
      module Names
        class Log < ActiveRecord::Base
          has_one :address, class_name: "Persons::Address"
        end
      end
    end

   # app/persons/address.rb
    module Persons
      class Address < ActiveRecord::Base
        belongs_to :log, class_name: "Persons::Names::Log"
      end
    end