ฉันจะยกตัวอย่างอื่นที่ฉันใช้ ฉันมีวิธี user_params ซึ่งส่งคืนพารามิเตอร์ที่จำเป็นในการบันทึกสำหรับผู้ใช้ (นี่คือโครงการ Rails)
def user_params
params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
)
end
คุณจะเห็นว่าฉันไม่ส่งคืนอะไรเลยนอกจากทับทิมจะส่งคืนผลลัพธ์ของบรรทัดสุดท้าย
หลังจากนั้นไม่นานฉันต้องเพิ่มแอตทริบิวต์ใหม่ตามเงื่อนไข ดังนั้นฉันจึงเปลี่ยนเป็นสิ่งนี้:
def user_params
u_params = params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
)
u_params[:time_zone] = address_timezone if u_params[:address_attributes]
u_params
end
ที่นี่เราสามารถใช้การแตะเพื่อลบตัวแปรในเครื่องและลบผลตอบแทน:
def user_params
params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
).tap do |u_params|
u_params[:time_zone] = address_timezone if u_params[:address_attributes]
end
end
User.new.tap &:foobar