Rails 5中筛选非GRACE状态还款记录的语法问题求助
修正你的Ruby筛选代码问题
嘿,你的代码里select的块写法出问题啦,这就是为啥筛选没生效,还是显示所有状态的记录。
原代码的问题
你写的select {[:state] != 'GRACE'}这个块有两个关键错误:
- 没有把遍历到的每个还款记录对象(也就是
repayment)传入块中,所以块里根本没用到当前要判断的记录 [:state]是一个包含符号的数组,它和字符串'GRACE'比较永远是true,相当于select把所有元素都保留了下来
正确的写法
你需要在select的块里接收每个还款对象,然后判断它的:state属性不等于'GRACE':
用for循环的正确版本
for repayment in mambu_repayments.select { |repayment| repayment[:state] != 'GRACE' } do # 这里写你的处理代码 end
更符合Ruby风格的写法(推荐用each代替for)
Ruby里更常用each来遍历集合,这样代码更简洁易懂:
mambu_repayments.select { |repayment| repayment[:state] != 'GRACE' }.each do |repayment| # 这里写你的处理代码 end
这样修改后,就只会筛选出状态不是GRACE的还款记录啦!
内容的提问来源于stack exchange,提问作者Dr.Gonzo
相关产品推荐
相关产品推荐

