Я хотел бы упаковать драгоценный камень, который включает модели 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
Любойидея чего не хватает?