Spree 3.0在扩展中添加了允许的属性

She*_*acu 9 ruby spree strong-parameters ruby-on-rails-4

所以我正在制作一个狂欢扩展,其中我有自己的属性,我Spree::Shipment在结帐过程中添加并添加了一个输入,问题是我的属性不是出货的允许属性的一部分,并且不清楚如何将其添加到允许的属性中.我找到了这个拉动请求的对话,据说要使用

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)

但是,目前还不清楚我在哪里放这个!?

"哦,把它放进去spree.rb"

这没有用.我试过把这段代码放进去

lib/spree.rb
lib/spree/permitted_attributes.rb
lib/spree_decorator.rb
lib/spree/permitted_attributes_decorator.rb
Run Code Online (Sandbox Code Playgroud)

(如此处所示)并且所有这些都导致错误抱怨shipment_attributes未被定义(因此可能是在PermittedAttributes评估主文件定义之前运行代码)或者根本没有任何反应.我应该在哪里放置此代码以将我的属性添加到允许的属性列表中?


编辑:由于这对人们来说似乎不清楚,我已经尝试了我发布的链接中列出的所有内容.告诉我尝试其中的东西是非常令人愤怒的.别那样做.

Tho*_*mas 5

“spree.rb”实际上意味着config/initializers/spree.rb。这是狂欢配置的正确位置。我注意到你/那篇文章提到了各种文件,但从未提到过这个文件。

进入此文件后:

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)

正如你提到的或

Spree::PermittedAttributes.shipment_attributes.push :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您将需要提供更多详细信息。


And*_*eko 0

正如此处所述,您可以将其放入ApplicationController.

或者您可以覆盖整个 allowed_pa​​rams,将您的添加到白名单中(通过将此代码直接放入application_controller.rblast 后面end,这将 100% 工作,或者通过创建一个新文件(例如在 lib 下,正如您已经尝试过的那样)):

module Spree
  module PermittedAttributes

    # bunch of code

    @@checkout_attributes = %i(
      email
      use_billing
      shipping_method_id
      coupon_code
      my_custom_attribute
    )

    # bunch of code

  end
end
Run Code Online (Sandbox Code Playgroud)