Rails:切片中的数组元素除外

时间:2018-10-26 11:40:54

标签: ruby-on-rails

我有学生这样的记录

{"id"=>"14", "first_name"=>"Donald", "last_name"=>"Trophy", "age"=>"13", "gender"=>"male", "cast"=>"black", "fee_status"=>"paid", "deleted_at"=>nil}

要将数据发送到DataTable,我需要一些列

patient.slice('age', 'gender', 'cast', 'fee_status').values

我有另一个数组hidden_columns来自某个流,该数组可以具有以下值:

["age"]

["age", "gender"]

["31", "33", "age"]

["31", "gender", "33", "age"]

我要excepthidden_columns中拥有的值

我正在尝试的是:

patient.slice('age', 'gender', 'cast', 'fee_status').except(hidden_columns).values

对我不起作用。

2 个答案:

答案 0 :(得分:4)

您必须在except内使用splat运算符,因为它接受多个键作为参数,而不是键数组,

patient.slice('age', 'gender', 'cast', 'fee_status').except(*hidden_columns)
 => {"cast"=>"black", "fee_status"=>"paid"}

答案 1 :(得分:1)

首先,您必须使用splat(*)运算符。然后,与其一起使用.slice().except(),不如通过这种方式更有效。

columns_to_show = ['age', 'gender', 'cast', 'fee_status']
columns_to_show = columns_to_show - hidden_columns if hidden_columns

patient.slice(*columns_to_show).values