我在我的应用中使用spree创建了新模型。我有一个名为Something
的新模型,我想狂欢Product
与Something有一对多的关系。所以我在apps目录中添加了一个名为spree
的文件夹和名为product.rb
的模型,其中的代码是
module Spree
class Product < Spree::Base
extend FriendlyId
has_many :somethings
end
end
如果我运行我的控制台,我的产品可以访问某些东西,但所有其他默认的狂欢产品方法都没有。我想我会覆盖它们。我在做什么错?我想要open
狂欢产品类并添加我的新关联。
答案 0 :(得分:3)
你需要monkeypatch那个东西!
<强>#{Rails.root} /lib/extensions/spree/product.rb 强>
Spree::Product.class_eval do |variable|
has_many :somethings , class_name: Something ,:foreign_key => "something_id"
end
<强> /#{Rails.root} /config/application.rb 强>
config.autoload_paths += %W(#{config.root}/lib/extensions)
答案 1 :(得分:-1)
Spree是一个rails引擎(更多关于rails engines here)。
这意味着您在应用程序中重新实现的任何类,该版本将接管原始版本。
我建议的是:
找出您的狂欢宝石所在的位置:
gem which spree
转到app / models / spree并打开product.rb。复制整个班级内容并将其粘贴到您自己的班级。
使用新功能添加更新类文件,例如
has_many:somethings