Agile Web Development On Rails书中建议金额用integer,单位是cents,好处XX。但是每个金额的field都要写两个method:amount_in_dollar和amount_in_dollar=,不如写个类似于attr_accessor的meta program,一次搞定。两段例子如下:
# config/enviorment.rb
class Module
def amounts_in_yuan(*args)
args.each do |sym|
class_eval %{
def #{sym}_in_yuan
amt = self.#{sym} || 0
sprintf("¥%01.2f", amt.to_f/100)
end
def #{sym}_in_yuan=(amt)
amt.sub!('¥', '') if amt.starts_with?('¥')
self.#{sym} = (amt.to_f * 100).to_i
end
}
end
end
end
# db/migrate/001_create_products.rb
class CreateProducts < ActiveRecord::Migration
def self.up
create_table :products do |t|
t.column :price, :integer # 金额定义为integer,单位为分
t.column :cost, :integer
...
end
end
...
end
# app/models/product.rb
class Product < ActiveRecord::Base
amounts_in_yuan :price, :cost
...
end
<%# app/views/products/edit.rhtml %>
...
单价:<%= f.text_field :product, :price_in_yuan %>元
成本:<%= f.text_field :product, :cost_in_yuan %>元
...
分享到:
- 2007-01-23 23:21
- 浏览 2758
- 评论(2)
- 论坛回复 / 浏览 (2 / 3965)
- 查看更多
相关推荐
在本项目中,"predict_dnd_amount_python预测_业绩预测_回归分析_" 是一个使用Python进行季度业绩预测的实践案例,主要涉及了数据预测、业务分析以及统计学中的回归分析技术。下面将详细阐述这些关键知识点。 首先...
A data structure implemented via a linked list. Useful for finding elements in a small amount of time.
Inspired by the large amount of recent research on column-oriented stores, we have developed a new specialized analytic data engine tightly-coupled with the Tableau data visualization system. The ...
csv表格中为随机森林分类器的测试数据,属性:Disbursed Existing_EMI ID Loan_Amount_Applied Loan_Tenure_Applied Monthly_Income Var4 Var5 Age EMI_Loan_Submitted_Missing Interest_Rate_Missing Loan_Amount_...
标题中的"Amount-in-words.rar"表明这是一个与金额表示相关的压缩文件,可能包含程序、代码或文本文件,用于将数字金额转换成中文大写。"site:en.pudn.com"标签暗示这个资源可能来源于一个英文版的PUDN(Programming...
}, amount_format: function(amount_part, amount_total) { return amount_part ' / ' amount_total; }, update: $.noop, done: $.noop, fail: $.noop };transition_delay$(document).ready...
WHERE B.CLIENT_CD = W_IN_CLIENT_CD UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT ...
为您提供了以下有关水位的信息: amount_tsh-总静压头(可用于水位的水量) date_recorded-输入行的日期资助者-谁为井提供了资金gps_height-井的高度安装程序-安装井的组织经度-GPS坐标纬度-GPS坐标wpt_name-水位...
while amount_received < amount_expected: data = client_socket.recv(16) amount_received += len(data) print('收到:', data.decode(), end='') finally: # 关闭连接 client_socket.close() ``` 客户端...
amnt funded_amnt funded_amnt_inv term int_rate installment grade sub_grade hardship_payoff_balance_amount hardship_last_payment_amount disbursement_method debt_settlement_flag debt_settlement_flag_...
例如,要在SH模式下的`sales`表中查询以'1001'开头的`AMOUNT_SOLD`,可以使用`LIKE`操作符配合通配符,如:`SELECT AMOUNT_SOLD FROM sales WHERE AMOUNT_SOLD LIKE '1001%'`。 在学生选课业务的场景中,连接查询是...
本文将深入探讨一个名为"money-amount.rar"的压缩包文件,该文件包含了使用MATLAB进行图像处理以计算图像中货币数量的代码实例,其主要标签为"money money money"。 MATLAB是一种强大的数学计算和数据分析工具,...
CLOI_PUT_SIGN_IN_FRONT 此函数将字符串末尾的负号移到字符串开头,适用于数值格式调整,确保数值的正确显示。 **参数**: - `value`:待调整的字符串。 **异常**: - `OTHERS`:处理过程中的其他错误。 ### ...
通过将二维图像展成一维向量进行随机置乱实现图像加解密
amount = float(amount_entry.get()) from_currency = from_currency_var.get() to_currency = to_currency_var.get() # 发送请求获取汇率 response = requests.get(f...
while amount_received < amount_expected: data = sock.recv(1024) amount_received += len(data) print('接收到数据:', data.decode()) finally: # 关闭连接 sock.close() ``` 客户端通过`sock.sendall()...
在错误案例中,我们尝试连接`store_in_detail`和`store_out_detail`两个表来展示商品id为1345的入库和出库情况。错误的SQL代码如下: ```sql SELECT a.quantity AS in_quantity, a.price AS in_price, (a.quantity ...
例如,你可以设置i_amount_spfli和i_amount_sflight为100,表示要生成100条spfli和sflight表的记录。 4. 点击“测试运行”按钮,然后执行“运行”,系统将根据指定数量生成测试数据。 5. 最后,这些数据将被插入到...
Member Function ODCIAggregateTerminate(self In Out strcat_type,ReturnValue Out varchar2,flags in Number) Return Number ); / --2. 创建类型体 Create Or Replace Type Body Strcat_type Is Static ...
本项目"personal--amount.rar_personal"是一个使用C++编写的个人账户管理系统,旨在帮助用户管理自己的财务信息,提供了一个简洁而实用的工具。 首先,我们来看这个系统的功能设计。一个基本的账户管理系统通常包括...