2011-11-20 39 views
6

Tôi cần sử dụng phần trăm trong ứng dụng Rails của mình. Trong bất kỳ chế độ xem nào, kể cả khi được người dùng nhập, định dạng sẽ cần phải là định dạng hàng trăm, 100.000. Khi nó được sử dụng trong tính toán, nó cần phải được đại diện theo định dạng hàng trăm, 1.00000.Lưu trữ phần trăm trong Rails + MySQL

di cư của tôi (tôi thêm cột vào một bảng hiện có) có dòng sau:

add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5 

Vì vậy, tính đến ngay bây giờ, tôi đang lưu trữ nó trong trăm (1.00000) định dạng. Cơ sở của tôi cho việc chọn lưu trữ nó theo định dạng này là tôi hình nó sẽ có nghĩa là logic kinh doanh sạch hơn (tức là không có mã số worker.cash_split/100.0.to_d treo xung quanh) khi tôi cần làm phép nhân.

Suy nghĩ duy nhất khác của tôi là có thể lạm dụng phương thức created_of. Tôi có thể lưu trữ dữ liệu ở định dạng hàng trăm (100.000) dưới dạng cash_split và sau đó tạo một trình truy cập thuộc tính cash_split_percentage trả về cash_split trong đối tác định dạng 1.0000 của nó.

Trả lời

5

Suy nghĩ đầu tiên của bạn là đúng ... đừng đánh giá cao nó.

Bạn chắc chắn nên lưu trữ số phần trăm trong cơ sở dữ liệu ở định dạng hàng trăm. Và sử dụng định dạng đó trong tất cả các phép tính Ruby của bạn.

Tỷ lệ phần trăm là hiển thị quy ước. Ví dụ: số 0,45 được hiển thị là 45%. Như vậy, hãy sử dụng trình trợ giúp Chế độ xem để chuyển đổi số liệu phần trăm của bạn từ định dạng nội bộ (số thập phân) sang định dạng hiển thị đã chọn của bạn - một chuỗi bao gồm dấu%.

+2

Bạn sẽ xử lý tỷ lệ phần trăm trong biểu mẫu như thế nào? Người dùng sẽ muốn nhập nó như 45% nhưng nó sẽ được lưu trữ là 0,45. Tuy nhiên, nếu người dùng nhập vào trường khác sai và biểu mẫu được hiển thị lại, trường phần trăm sẽ có 45 và không phải là 0,45. Với điều này tôi muốn nói rằng một cuộc gọi lại có thể không phải là giải pháp cuối cùng. –

+0

bạn có thể viết getters và setters cho tỷ lệ phần trăm theo định dạng hàng trăm. do đó bạn sẽ có thuộc tính #some_ratio và các phương thứC#some_ration_percentage & # some_ration_percentage = sẽ chỉ chia/nhân với 100 và tiếp tục. – Emirikol

Các vấn đề liên quan