1

У меня есть модель Persons::Names::Log и другая модель Persons::Address. Я хочу создать связь между Log и Address. Является ли это возможным? Какие заявления следует писать в обоих файлах модели?Active Record Associations in Rails

Edit:

Я хочу иметь ассоциацию как Persons::Names::Log.last.address

ответ

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 
+0

Это не сработало. – Hellboy

+0

Отрегулируйте ассоциации согласно вашим требованиям/структурам классов; главное - указать полное имя класса. –

+0

Кроме того, вам необходимо убедиться в наличии соответствующего поля базы данных для соответствующей ассоциации, выполнив миграцию. Миграция будет специфичной для отношений между двумя объектами. Подробнее см. Http://guides.rubyonrails.org/association_basics.html о перемещениях, соответствующих каждой взаимосвязи. –

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 
Смежные вопросы