0

例として:

  def create

    resource = build_resource
    resource.assign_attributes(params[resource_instance_name], as: :admin)

    create! do |format|
      format.js {...}
    end

  end

上記の問題は、属性がに割り当てられておらas: :adminず、チェックなしで割り当てられているため、このメソッドは効果がないことです。それはcreate!方法ですか?属性は他の場所でこのリソースに割り当てられており、それがどこにあるかわかりません。洞察に感謝します。

4

1 に答える 1

0

ここで私の答えを見つけました:https ://github.com/josevalim/inherited_resources/pull/153 。オーバーライドする必要がas_roleあり、role_given?-

def as_role
  { as: current_user.highest_role }
end

def role_given?
  true
end

これにより、定義されているコントローラーの属性、または私のようにマスターリソースコントローラーから継承する場合はすべてのリソースの属性に常に役割が適用されます。

于 2012-11-09T05:20:12.820 に答える