簡體   English   中英

如何對不在數據庫中直接存在的文件字段使用強參數?

[英]How can I use strong parameters for a file field that is not directly in the database?

我想從用戶那里收集某個字段,但是在將其放入數據庫之前,我首先對其進行了操作。 我已經開始使用強大的參數,並且對如何執行此操作感到困惑。 我不斷收到錯誤的錯誤unpermitted parameters: number_of_people, cost

這是我要執行的操作的一個示例:如果我不想收集某個事件的成本或人數,而只想知道事件中每人的成本,則可以將成本除以人員,然后將該號碼存儲在數據庫中。

如何從字段中獲取這兩個值,然后操縱它們以產生最終值?

attr_accessor

您需要在模型中使用虛擬屬性:

#app/models/model.rb
Class Model < ActiveRecord::Base
    attr_accessor :number_of_people, :cost
end

Rails的工作方式是基於模型的附加attributes來處理數據。 由於模型只是一個class ,因此意味着您可以在數據庫中定義的屬性之上添加額外的屬性。

為此,您必須使用attr_accessor方法為要使用的attr_accessor創建一個settergetter 這與在數據庫中定義屬性的方式完全相同,只是無法保存它們。

-

控制者

您還應確保記住通過strong_params方法傳遞這些參數:

#app/controllers/model_controller.rb
Class ModelController < ActiveRecord::Base
   ...
   def model_params
       params.require(:model).permit(:your, :params, :including, :your, :virtual, :attrs)
   end
end

-

打回來

如何從字段中獲取這兩個值,然后操縱它們以產生最終值?

如上所述應用模型數據,然后按如下所示設置一個before_create回調:

#app/models/model.rb
Class Model < ActiveRecord::Base
   ...
   before_create :set_values

   private

   def set_values
      # ... set values here
   end
end

暫無
暫無

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

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