2017-06-16 46 views
1

我正在使用之前從Rails 3升級的Rails 4應用程序。我之前沒有使用過Rails 3。我遇到了這樣的東西user.update_attributes({ attr => bulk_update_params[attr] }, :as => :admin)。軌道4目前抱怨update_attributes只接受1個參數,而不是2Rails 3 #update_attributes

我試圖做user.update_attributes({ attr => bulk_update_params[attr] }).merge(as: :admin)合併as: :admin但然後我得到的東西,如「爲」不是已知屬性」打招呼。

不完全肯定,但我該如何處理與as: admin一部分?是否安全,完全刪除或者有一種方法來傳遞as: :admin在Rails的原user.update_attributes({ attr => bulk_update_params[attr] }, :as => :admin) 4?

我認爲這是與attr_accessiblestrong_params只是不確定如何在Rails 4中使用它。任何想法?

+2

你可以給我們一個用戶的屬性,以及在你的上下文中是什麼作爲::admin? – Poilon

回答

0

看看強大的參數。允許的屬性應該在控制器不是模型來確定

http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters

例如,該控制器將具有

def customer_params 
    if current_user.admin? 
    params.require(:customer).permit(:fname, :lname, :status) 
    else 
    params.require(:customer).permit(:fname, :lname) 
    end 
end 

def update 
    @customer.update_attributes(customer_params) 
    ... 
end 
+0

我知道強烈的參數。我在問怎麼用'as'鍵。它會成爲,就像你的例子中'customer_params = params.require(:customer).permit(:as,:blah,:blah)'?我會在哪裏允許「as」鍵?我感覺不舒服。 – Emanuel

+0

是'as'是attr_accessor? – puneet18

+0

如果是,則嘗試'如果current_user.as =='admin'' – puneet18

0

嘗試移動爲:管理員到散

user.update_attributes({ attr => bulk_update_params[attr], :as => :admin })

你可能也想考慮使用update_attributes! (最後一個!),所以如果有錯誤,它會炸燬,不會失敗。

相關問題