I have record of students like
{"id"=>"14", "first_name"=>"Donald", "last_name"=>"Trophy", "age"=>"13", "gender"=>"male", "cast"=>"black", "fee_status"=>"paid", "deleted_at"=>nil}
To send data to DataTable I am taking some columns
patient.slice('age', 'gender', 'cast', 'fee_status').values
I have another array coming from some flow, hidden_columns which can have following value:
["age"]
["age", "gender"]
["31", "33", "age"]
["31", "gender", "33", "age"]
I want to except the values I have in hidden_columns
What I am trying is:
patient.slice('age', 'gender', 'cast', 'fee_status').except(hidden_columns).values
which is not working for me.
You'll have to use the splat operator inside except as it accepts multiple keys as arguments, not an array of keys,
patient.slice('age', 'gender', 'cast', 'fee_status').except(*hidden_columns)
=> {"cast"=>"black", "fee_status"=>"paid"}
First of all you have to use splat (*) operator. Then instead of using .slice() and .except() together, you can do this is more efficient way.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With