Создание драгоценного камня со связанными моделями Rails - PullRequest
3 голосов
/ 07 февраля 2012

Я хотел бы упаковать драгоценный камень, который включает модели ActiveRecord, которые могут быть связаны с моделями в существующем приложении Rails.Я пытался следовать коду для acts_as_taggable_on, но у меня возникли некоторые проблемы, заставляющие ассоциации работать.

Мой камень называется Kitchen.Моя модель, определенная в этом драгоценном камне, - «Блюдо», и я хочу добавить полиморфную ассоциацию (как Cook) к модели в основном приложении, таком как «Пользователь».

В lib/kitchen.rb

require "active_record"
require "kitchen/dish.rb"
require "kitchen/cook.rb"

В lib/kitchen/dish.rb

module Kitchen
  class Dish < ::ActiveRecord::Base
    belongs_to :cook, :polymorphic => true
  end
end

В lib/kitchen/cook.rb (снятие кода с http://guides.rubyonrails.org/plugins.html#add-an-acts_as-method-to-active-record без особого понимания)

module Kitchen
  module Cook
    extend ActiveSupport::Concern

    included do
    end

    module ClassMethods
      def acts_as_cook
        class_eval do
          has_many :dishes, :as => :cook
        end
      end
    end
  end
end

ActiveRecord::Base.send :include, Kitchen::Cook

Наконец, я перенес все в моемфиктивное приложение и включите ассоциацию в spec/dummy/app/models/user.rb

class User < ActiveRecord::Base
  acts_as_cook
end

Я получаю сообщение об ошибке каждый раз, когда пытаюсь получить доступ к user.dishes для экземпляра пользователя:

 NameError:
   uninitialized constant User::Dish

Любойидея чего не хватает?

1 Ответ

4 голосов
/ 07 февраля 2012

Попробуйте это может быть:

has_many :dishes, :as => :cook, :class_name => 'Kitchen::Dish'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...