簡體   English   中英

Rails:在控制器中,將值添加到表單提交的參數中

[英]Rails: In a controller, add a value to the params submitted by a form

在我的“用戶”數據庫中,我有“電子郵件”,“名稱”和“位置”。

Emailname是通過表單提交的,但是在我為新用戶編寫行之前, position是在控制器中確定的。 如何向我的alpha_user_params添加position

def create
  position = User.order("position DESC").first
  # How can I add position to alpha_user_params????

  @user = User.new(user_params)
  if @user.save
    # success stuff
  else 
    # error stuff
  end
end

private
  def alpha_user_params
    params.require(:alpha_user).permit(:email, :producer, :position)
  end

如果position是用戶的屬性,則可以執行以下操作:

  @user = User.new(user_params)
  @user.position = position
  # @user.position = User.order("position DESC").first
  if @user.save
    # success stuff
  else 
    # error stuff
  end

這不需要您向alpha_user_params方法添加任何內容。 由於position屬性是由您的控制器生成的,因此不會由用戶添加/修改,因此我建議您將此屬性保留在控制器本身中。

user_params僅應允許用戶輸入/修改的那些屬性。

我有一個類似的問題,我在模型中使用了before_create

class User < ApplicationRecord

before_create :get_position

private

def get_position
  self.position = YourLibrary.position
end

創建用戶時,這將添加位置。 您還可以使用其他回調,例如before_save ,請查看活動記錄文檔

暫無
暫無

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

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