0

Я использую движок блогов в режиме rails под названием Monologue. Я хотел бы, чтобы одна из моделей двигателей имела отношения belongs_to и has_many с моей основной моделью приложений. У пользователя (автора) может быть много сообщений, а сообщение принадлежит автору (User Model). Я попробовал namespacing модель в class_name, но он все еще искал модель внутри движка.Rails принадлежит_to has_many отношения, основное приложение и движок

Ошибка

NameError: uninitialized constant Monologue::Post::MyApp::User 

post.rb

class Monologue::Post < ActiveRecord::Base 
    belongs_to :author, :class_name => "MyApp::User", :foreign_key => "author_id" 
end 

user.rb

class User < ActiveRecord::Base 
    has_many :posts, :class_name => "Monologue::Post", :foreign_key => "author_id" 
end 

Схема

create_table "monologue_posts", force: true do |t| 
    t.integer "author_id" 
end 

Я получил это далеко, используя: Creating a belongs_to relationship with a model from the main app from an engine model

ответ

0

NameError: uninitialized constant Monologue::Post::MyApp::User

Вы должны установить имя класса из user.rb в MyApp::User

class MyApp::User < ActiveRecord::Base 
    has_many :posts, :class_name => "Monologue::Post", :foreign_key => "author_id" 
end 
+0

ли я, чтобы настроить каждый экземпляр пользователя в коде моего приложения для MyApp :: User? – MicFin

+0

@MicFin Вы определили имя класса в «Monologue :: Post'' user.rb' как ': class_name =>« MyApp :: User », поэтому вам нужно изменить имя класса' user.rb' а также – Pavan

+0

Переименование пользовательской функции разрывает рельсы активной поддержки /Users/Mike/.rvm/gems/ruby-2.1.5/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:481:in 'load_missing_constant ': Не удалось автозагрузить постоянный пользователь, ожидаемый /Users/Shared/code/kindrdfood/RecRm/app/models/user.rb, чтобы определить его (LoadError) – MicFin

Смежные вопросы