Ruby on rails 创建具有关联Rails模型的gem
我想打包一个gem,其中包括可以与现有Rails应用程序中的模型关联的ActiveRecord模型。我一直试图遵循acts_as_taggable_on的代码,但在使关联正常工作时遇到了一些问题 我的宝贝叫厨房。我在gem中定义的模型是Dish,我想向主应用程序(如User)中的模型添加一个多态关联(如Cook) 在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"
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执行任何操作时,它给了我一个错误。我刚从玩具领域翻译回来,我感到困惑。你的答案完全正确。