我想扩展类角色,以便我可以添加更多角色 Spree中的角色表。我的申请会有不同的价格 角色。
默认情况下,角色中包含:(“admin”和“user”)。我想补充更多 表格的类型。
Q1:我可以在我的一个扩展中扩展Role类吗? Q2:我如何实现(实际上扩展到app / models / Variant.rb) 价格基于不同的角色,只是从一个角度获得价格 地点?所以我不必更改* _html.erb文件中的代码 它的使用价格。
如果我能让这个工作起来,这将是一个很酷的扩展 github上。
谢谢
答案 0 :(得分:5)
要在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
时,它会将所有这些角色添加到数据库中。
如果有效,请告诉我。