เพียงแค่อัพเดตเล็กน้อยและผสานคำตอบทั้งหมดสำหรับจูเนียร์ / ผู้เริ่มต้นที่ต้องการในการพัฒนา RoR ที่จะมาที่นี่แน่นอนสำหรับคำอธิบายบางอย่าง
ทำงานกับเงิน
ใช้:decimal
เพื่อเก็บเงินในฐานข้อมูลตามที่ @molf แนะนำ (และ บริษัท ของฉันใช้เป็นมาตรฐานทองคำเมื่อทำงานกับเงิน)
# precision is the total number of digits
# scale is the number of digits to the right of the decimal point
add_column :items, :price, :decimal, precision: 8, scale: 2
คะแนนน้อย:
วิธีสร้างการย้ายข้อมูล
หากต้องการสร้างการย้ายข้อมูลด้วยเนื้อหาข้างต้นให้เรียกใช้ในเทอร์มินัล:
bin/rails g migration AddPriceToItems price:decimal{8-2}
หรือ
bin/rails g migration AddPriceToItems 'price:decimal{5,2}'
ตามที่อธิบายไว้ในโพสต์บล็อกนี้
การจัดรูปแบบสกุลเงิน
จูบห้องสมุดเสริมลาก่อนและใช้ผู้ช่วยในตัว ใช้number_to_currency
เป็น @molf และ @facundofarias แนะนำ
ที่จะเล่นกับnumber_to_currency
ผู้ช่วยใน Rails คอนโซลส่งการเรียกActiveSupport
's NumberHelper
ระดับเพื่อให้สามารถเข้าถึงผู้ช่วย
ตัวอย่างเช่น:
ActiveSupport::NumberHelper.number_to_currency(2_500_000.61, unit: '€', precision: 2, separator: ',', delimiter: '', format: "%n%u")
ให้ผลลัพธ์ต่อไปนี้
2500000,61€
ตรวจสอบอื่น ๆoptions
ของnumber_to_currencyผู้ช่วย
จะวางตรงไหน
คุณสามารถใส่ไว้ในตัวช่วยแอปพลิเคชันและใช้ภายในมุมมองได้ไม่ว่าจะกี่เท่าใดก็ตาม
module ApplicationHelper
def format_currency(amount)
number_to_currency(amount, unit: '€', precision: 2, separator: ',', delimiter: '', format: "%n%u")
end
end
หรือคุณสามารถวางไว้ในItem
แบบจำลองเป็นวิธีการแบบอินสแตนซ์และเรียกมันว่าคุณต้องการจัดรูปแบบราคา (ในมุมมองหรือผู้ช่วย)
class Item < ActiveRecord::Base
def format_price
number_to_currency(price, unit: '€', precision: 2, separator: ',', delimiter: '', format: "%n%u")
end
end
และตัวอย่างวิธีใช้number_to_currency
contrroler ภายใน (สังเกตเห็นnegative_format
ตัวเลือกใช้เพื่อแสดงการคืนเงิน)
def refund_information
amount_formatted =
ActionController::Base.helpers.number_to_currency(@refund.amount, negative_format: '(%u%n)')
{
# ...
amount_formatted: amount_formatted,
# ...
}
end
DECIMAL(19, 4)
เป็นที่นิยมการตรวจสอบนี้ยังตรวจสอบที่นี่โลกรูปแบบสกุลเงินที่จะตัดสินใจว่าหลายสถานที่ที่จะใช้ทศนิยมหวังช่วย