当前位置:  开发笔记 > 前端 > 正文

如何在app/models中覆盖/扩展现有的spree类?

如何解决《如何在app/models中覆盖/扩展现有的spree类?》经验,为你挑选了1个好方法。

我想扩展类角色,以便我可以向Spree中的角色表添加更多角色.我的申请会根据角色有不同的价格.

默认情况下,角色中包​​含:("admin"和"user").我想在表格中添加更多类型.

Q1:我可以在我的一个扩展中扩展Role类吗?Q2:我如何实现(实际上在app/models/Variant.rb上扩展)基于不同角色的价格,以便它只是从一个地方获取价格?所以我不必更改*_html.erb文件中使用价格的代码.

如果我可以让这个工作,那将是github的一个很酷的扩展.

谢谢



1> Lance Pollar..:

要在Spree中扩展类,可以使用模块或class_eval.狂欢扩展倾向于使用class_eval.这是扩展UserVariant自定义扩展的示例.

class CustomRoleExtension < Spree::Extension

  # main extension method
  def activate

    # extend User
    User.class_eval do
      def business?
        self.roles.include?("business")
      end

      def sponsor?
        self.roles.include?("sponsor")
      end

      def developer?
        self.roles.include?("developer")
      end
    end

    # extend Variant
    Variant.class_eval do
      def price_for(role)
        # ...
      end
    end
  end

end

要添加更多角色,我只是defaults/roles.yml在我的扩展中添加了一个自定义yaml块:

coach_role:
  id: 3
  name: coach

trainer_role:
  id: 4
  name: trainer

graduate_role:
  id: 5
  name: graduate

然后,当您运行时rake db:bootstrap,它会将所有这些角色添加到数据库中.

如果有效,请告诉我.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有