It's going to be really expensive to check that on every call. Maybe it could 
be a good feature for a gem you only use in development.

---
Richard Schneeman
http://www.schneems.com




On Thu, Mar 24, 2016 at 4:22 PM -0700, "Andrew Selder" 
<[email protected]> wrote:










Andrew,

I agree they shouldn’t happen in the first place, but unfortunately 
they crop up in the real world, you get a hash from a JSON object and 
mix that with some params, and you might do this without even realizing 
it.

This is why I propose that AR spit out a warning message (perhaps 
upgraded to an error in future versions) if this happens.

Andrew

On 24 Mar 2016, at 16:09, Andrew Kaspick wrote:

> I'd label this purely as undefined behavior and such cases shouldn't 
> occur
> in the first place.
>
> On Thu, Mar 24, 2016 at 6:59 PM, Andrew Selder 
> 
> wrote:
>
>> Hi all,
>>
>> After we got bit by it a couple times recently, I was thinking of
>> submitting a PR for ActiveRecord that would issue a warning if you 
>> submit a
>> hash containing the same key as both a symbol and a string to any of 
>> the AR
>> construction methods (create, new, update_attributes, etc…) . As 
>> far as I
>> can tell, the behavior when this happens in undefined (and change 
>> between
>> Rails 3 and 4 for example).
>>
>> For example:
>>
>> attr = { ‘a’ => 123, :a => 456 }
>> ARModel.create!(attr)
>>
>> In Rails 3, you’ll get an object with the ‘a’ attributes set to 
>> 456, in
>> Rails 4, you’ll get 123.
>>
>> I think this kind of things is almost always unintentional and worth 
>> a
>> warning.
>>
>> I’ll be happy to code this up and submit it if people think it 
>> would be
>> useful and accepted.
>>
>> Please let me know your thoughts and feedback.
>>
>> Thanks,
>>
>> Andrew
>>
>> --
>> You received this message because you are subscribed to the Google 
>> Groups
>> "Ruby on Rails: Core" group.
>> To unsubscribe from this group and stop receiving emails from it, 
>> send an
>> email to [email protected].
>> To post to this group, send email to 
>> [email protected].
>> Visit this group at https://groups.google.com/group/rubyonrails-core.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> -- 
> You received this message because you are subscribed to the Google 
> Groups "Ruby on Rails: Core" group.
> To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected].
> To post to this group, send email to 
> [email protected].
> Visit this group at https://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.





-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to