簡體   English   中英

Rails 4強參數

[英]Rails 4 strong parameters

Rails 4處理強參數似乎很有趣:

def UsersController < ActionController::Base
  def update
    @user = current_user

    if @user.update_attributes(user_profile_parameters)
      redirect_to home_path, notice:  "Your profile has been successfully updated."
    else
      render action: "edit"
    end
  end

  private
  def user_profile_parameters
    params.require(:user).permit(:name, :password, :password_confirmation, :email)
  end
end

我想知道,在Rails 3中是不是可能? 是的,或許只有1行,而不是只有1行。 但是,那里沒有什么新東西,它只是一個手動創建的允許參數列表,事實上,它只是一個哈希,不是嗎? 或者它有更深層次的目的嗎?

我想它在將rails 4作為單獨的gem發布之前存在方式(之前的方式) https://github.com/rails/strong_parameters

rails 4默認使用它,如果你想將它與rails 3一起使用,只需在你的gemfile中獲取gem即可開始:)。

在gem的github鏈接上,他們也寫了關於如何使用它的精彩文檔,所以我想你應該沒有任何問題使用它。

當然,它沒有什么新東西,你可以通過編寫自己的過濾器來手動進行過濾,如果哈希中的深層嵌套哈希和數組被動態創建(不固定),事情可能會變得有點棘手

“”是的,而不是只有1行,它將需要3行“”,這就是大多數寶石所做的,我們使用它們而不是重新發明輪子,只關注我們的業務邏輯。

來自官方博客

我們正在探索一種處理Rails中的質量分配保護的新方法。 或者實際上,它並不是一種真正的新方式,更多的是在你忘記的時候將一些醋混合在一起來提取既定的做法。

這種新方法是切片模式的提取,我們正在調用它的插件strong_parameters(已經作為gem使用)。 基本思想是將質量分配保護移出模型並進入其所屬的控制器。

控制器的重點是控制用戶和應用程序之間的流程,包括身份驗證,授權以及作為訪問控制的一部分。 我們永遠不應該在模型中加入質量分配保護,許多人很久以前就停止了切片模式或其中的變化。 現在是時候提取這種模式並將其帶給人們。

要在Rails 3中使用它,您可以使用強參數gem並按照其中的說明進行操作。

我想知道,在Rails 3中是不是可能?

是的,您可以使用此gem在rails 3中使用強參數。

它只是一個哈希,不是嗎?

是的,參數只是一個哈希。

或者它有更深層次的目的嗎?

我認為你所處的位置是我們不得不編寫更多代碼來做同樣的事情。 如果你正在做一些基本的工作,這似乎是這樣的,但是一旦你開始定制授權並使事情變得更有活力,事情就開始變得棘手了。

一個問題是attr_accessible不是很靈活。 強參數修復了這一點。 我相信強大的參數是一種讓您更有意識並讓您更好地控制數據的方法。 一種為您提供有關創建記錄的數據的文檔的方法。

說得通?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM