Broken caching in Rails 3.1.0

Hi, I experience a strange issue in Rails 3.1.0 with activerecord

https://gist.github.com/1273558

See the bottom lines of this gist. Why is there a difference in the resultset of role.childs and role.childs.all

This happens in test and development mode.

Maybe this is an artifact of not using the proper plural of "child"? Try "children" instead of "childs". Rails internally works a lot with building plurals and singulars. Something could go wrong here.

Other than that it's difficult to tell because you did not show your model definition. I'd also recommend using the built-in functions like "role.children.build" instead of defining methods like "add_subrole" - that may interfere with caching because "role.children" is evaluated lazily in Rails3 while "role.children.all" makes it evaluate now. Combined with your improper naming scheme this may be the culprit. It looks like you are building children outside the knowledge of the relation.

Jones wrote: