Actions
Bug #20064
closedInconsistent behavior between array splat *nil and hash splat **nil
Description
This has been discussed in #8507 and #9291 but both were closed because they lacked a clear use case.
I think the following code should work, showing a clear use case:
invitation = if params.key?(:inviter_id)
{ invitation_attributes: params.slice(:inviter_id) }
end
User.create(
email: 'john.doe@ruby.example',
first_name: 'John',
first_name: 'Doe',
**invitation,
)
Per the previous discussions, this is because *
uses explicit conversion to array (to_a
, not to_ary
), while **
uses implicit conversion to hash (to_hash
, not to_h
).
I find it confusing that you can splat nil into an array, but not nil into a hash. It would make sense for **
to use explicit conversion.
Actions
Like4
Like1Like0Like0Like0Like0