Ruby on rails 创建具有关联Rails模型的gem

Ruby on rails 创建具有关联Rails模型的gem,ruby-on-rails,activerecord,gem,associations,Ruby On Rails,Activerecord,Gem,Associations,我想打包一个gem,其中包括可以与现有Rails应用程序中的模型关联的ActiveRecord模型。我一直试图遵循acts_as_taggable_on的代码,但在使关联正常工作时遇到了一些问题 我的宝贝叫厨房。我在gem中定义的模型是Dish,我想向主应用程序(如User)中的模型添加一个多态关联(如Cook) 在lib/kitchen.rb中 require "active_record" require "kitchen/dish.rb" require "kitchen/cook.rb"

我想打包一个gem,其中包括可以与现有Rails应用程序中的模型关联的ActiveRecord模型。我一直试图遵循acts_as_taggable_on的代码,但在使关联正常工作时遇到了一些问题

我的宝贝叫厨房。我在gem中定义的模型是Dish,我想向主应用程序(如User)中的模型添加一个多态关联(如Cook)

lib/kitchen.rb中

require "active_record"
require "kitchen/dish.rb"
require "kitchen/cook.rb"
module Kitchen
  class Dish < ::ActiveRecord::Base
    belongs_to :cook, :polymorphic => true
  end
end
class User < ActiveRecord::Base
  acts_as_cook
end
lib/kitchen/dish.rb中

require "active_record"
require "kitchen/dish.rb"
require "kitchen/cook.rb"
module Kitchen
  class Dish < ::ActiveRecord::Base
    belongs_to :cook, :polymorphic => true
  end
end
class User < ActiveRecord::Base
  acts_as_cook
end
最后,我已经迁移了虚拟应用程序中的所有内容,并在
spec/dummy/app/models/user.rb中包含了关联

require "active_record"
require "kitchen/dish.rb"
require "kitchen/cook.rb"
module Kitchen
  class Dish < ::ActiveRecord::Base
    belongs_to :cook, :polymorphic => true
  end
end
class User < ActiveRecord::Base
  acts_as_cook
end
知道少了什么吗

试试这个:

has_many :dishes, :as => :cook, :class_name => 'Kitchen::Dish'

太棒了,这修正了错误。现在,当我尝试使用
user.disks
NoMethodError:undefined method X for Kitchen::Cook:moduleneverind执行任何操作时,它给了我一个错误。我刚从玩具领域翻译回来,我感到困惑。你的答案完全正确。