6

Spree-2.1 + Rails4 で spree::user に新しいフィールドを追加するには?

私の古いカスタマイズのように: ==========================

Spree::User.class_eval do

attr_accessible :f_name, :l_name :gender
validates :f_name, :presence => true, :length => {:maximum => 25}
validates :l_name, :presence => true, :length => {:maximum => 20}

終わり

強力なパラメータを持つ新しい作品: ===============================

module Spree UserRegistrationsController.class_eval do

private
 def spree_user_params
   params.require(:spree_user).permit(:f_name, :l_name)
 end

end

終わり

ロールバックしたため機能していませんが..

あなたのコメントを教えてください。

4

2 に答える 2

13

最近 spree_auth_devise が変更され、Spree::User に許可された属性を設定できるようになりました。

これは関連するコード行です: https://github.com/spree/spree_auth_devise/blob/ac27effb5998e5875261f08655e442461a031370/app/controllers/spree/user_registrations_controller.rb#L69

次のように f_name と l_name を Spree::PermittedAttributes.user_attributes に追加する必要があります。

# in an initializer
Spree::PermittedAttributes.user_attributes << :f_name
Spree::PermittedAttributes.user_attributes << :l_name

Spree::PermittedAttributes の詳細については、次のプル リクエストを参照してください。

https://github.com/spree/spree/pull/3566

于 2013-11-15T15:58:43.383 に答える
1

@gmacdougallは正しいですが、拡張機能でこれを行う場合は、デコレータを介してこれを行うことをお勧めします。拡張機能は、ジェネレーターを介してユーザーがインストールしたイニシャライザーでこれを定義する必要がありますが、これは維持できません。

# lib/spree/permitted_attributes_decorator.rb
Spree::PermittedAttributes.class_eval do
  @@user_attributes.push(:f_name, :l_name)
end

Spree:PermittedAttributesモジュールで、多くのモデルに新しい属性を追加できます。Spree コントローラーは、 Spree::Core::ControllerHelpers::StrongParametersモジュールに含まれるメソッドを介してこれらの属性を取得します。

于 2014-04-20T01:40:51.753 に答える