我有学生这样的记录
{"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"]
我要except
在hidden_columns
中拥有的值
我正在尝试的是:
patient.slice('age', 'gender', 'cast', 'fee_status').except(hidden_columns).values
对我不起作用。
答案 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