[英]How can I use strong parameters for a file field that is not directly in the database?
我想從用戶那里收集某個字段,但是在將其放入數據庫之前,我首先對其進行了操作。 我已經開始使用強大的參數,並且對如何執行此操作感到困惑。 我不斷收到錯誤的錯誤unpermitted parameters: number_of_people, cost
。
這是我要執行的操作的一個示例:如果我不想收集某個事件的成本或人數,而只想知道事件中每人的成本,則可以將成本除以人員,然后將該號碼存儲在數據庫中。
如何從字段中獲取這兩個值,然后操縱它們以產生最終值?
您需要在模型中使用虛擬屬性:
#app/models/model.rb
Class Model < ActiveRecord::Base
attr_accessor :number_of_people, :cost
end
Rails的工作方式是基於模型的附加attributes
來處理數據。 由於模型只是一個class
,因此意味着您可以在數據庫中定義的屬性之上添加額外的屬性。
為此,您必須使用attr_accessor
方法為要使用的attr_accessor
創建一個setter
和getter
。 這與在數據庫中定義屬性的方式完全相同,只是無法保存它們。
-
控制者
您還應確保記住通過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.