修改Spree模型以添加更多关系

时间:2014-09-21 06:23:55

标签: ruby-on-rails ruby models spree

我在我的应用中使用spree创建了新模型。我有一个名为Something的新模型,我想狂欢Product与Something有一对多的关系。所以我在apps目录中添加了一个名为spree的文件夹和名为product.rb的模型,其中的代码是

module Spree
  class Product < Spree::Base
    extend FriendlyId

    has_many :somethings
  end
end

如果我运行我的控制台,我的产品可以访问某些东西,但所有其他默认的狂欢产品方法都没有。我想我会覆盖它们。我在做什么错?我想要open狂欢产品类并添加我的新关联。

2 个答案:

答案 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)。

这意味着您在应用程序中重新实现的任何类,该版本将接管原始版本。

我建议的是:

  1. 找出您的狂欢宝石所在的位置:

    gem which spree

  2. 转到app / models / spree并打开product.rb。复制整个班级内容并将其粘贴到您自己的班级。

  3. 使用新功能添加更新类文件,例如

    has_many:somethings