Ruby on rails 自定义Solidus库代码-带有可选电话号码的地址
我试图重写Solidus代码,想知道我的选项是什么Ruby on rails 自定义Solidus库代码-带有可选电话号码的地址,ruby-on-rails,spree,solidus,Ruby On Rails,Spree,Solidus,我试图重写Solidus代码,想知道我的选项是什么 特别是,我正在尝试更改地址,使手机成为可选的。Solidus旨在提供更好的定制界面,因为它增加了您破坏系统的机会 最初的答案是Rails 6.0(Zeitwerk更改)的错误 请确保将文件命名为*\u decorator.rb,这样它们将由solidus自动拾取。 原始答复: 从最优先到最不优先列出的备选方案 为此,他们提供 装饰师 这对我们没有帮助,因为地址在Solidus库中起作用,而不是在我们的应用程序中调用代码 模块#前置
特别是,我正在尝试更改地址,使手机成为可选的。Solidus旨在提供更好的定制界面,因为它增加了您破坏系统的机会 最初的答案是Rails 6.0(Zeitwerk更改)的错误 请确保将文件命名为
*\u decorator.rb
,这样它们将由solidus自动拾取。
原始答复: 从最优先到最不优先列出的备选方案
- 这对我们没有帮助,因为地址在Solidus库中起作用,而不是在我们的应用程序中调用代码
- 在
下创建一个文件,并根据需要预先添加其他spree名称空间app/models/spree
- 将前缀添加到
config/initializers/spree.rb
- Prepend是对class_eval的改进,因为您可以使用super调用方法调用的非重写版本李>
module Spree
module OptionalPhoneAddress
# require_phone?
# - no longer require a phone
# - a * no longer appears next to phone in the view
#
def require_phone?
false
end
end
end
config/initializers/spree.rb
#
# Customization of Spree Code
#
Spree::Address.prepend Spree::OptionalPhoneAddress
注
- 您已经改变了Solidus的性能,应该对其进行测试
- Spree的google小组提出了解决这个问题的方法——我不知道这是否是新的维护者目前的做法
#
# Customization of Spree Code
#
Spree::Address.prepend Spree::OptionalPhoneAddress