我想扩展类角色,以便我可以向Spree中的角色表添加更多角色.我的申请会根据角色有不同的价格.
默认情况下,角色中包含:("admin"和"user").我想在表格中添加更多类型.
Q1:我可以在我的一个扩展中扩展Role类吗?Q2:我如何实现(实际上在app/models/Variant.rb上扩展)基于不同角色的价格,以便它只是从一个地方获取价格?所以我不必更改*_html.erb文件中使用价格的代码.
如果我可以让这个工作,那将是github的一个很酷的扩展.
谢谢
要在Spree中扩展类,可以使用模块或class_eval
.狂欢扩展倾向于使用class_eval
.这是扩展User
和Variant
自定义扩展的示例.
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
,它会将所有这些角色添加到数据库中.
如果有效,请告诉我.