Lille
2011-Mar-19 14:12 UTC
[rspec-users] [rspec-rails] warning about polymorphism on child objects
Hi, I just ran into kind of an issue with child models in a one-to-one relationship who are also in a polymorphic association, i.e., their foreign key is kept by another model, e.g., ''Comment''. So, the path for a child might be "human_parents/1/child", while the path to the polymorphic association would be "human_parents/1/child/ comments". (Imagine that there are many kinds of parents, all capable of only one child, e.g., "kangaroo_parents/1/child".) The problem, I''ve found, is that a relatively efficient approach to controlling the Comment model, i.e., having a CommentController, is not fully testable under rspec-rails, bc the routes are unique within the CommentController spec file only by their params. So, when I do say ''get :new, :human_parent_id=>2'' I can''t further specify the action on the child, e.g., ''get new comment for the child''.>From a rspec-rails testing perspective, then, this should make youprefer to distribute the comment controller actions among the child controllers and not, as is often proposed, in a single controller. If anyone has any thoughts on how I can in fact, run around this problem and keep my CommentController, please write. Lille
Lille
2011-Mar-20 15:02 UTC
[rspec-users] [rspec-rails] warning about polymorphism on child objects
...I couldn''t handle this lingering difficulty, so I just put the CommentController into a module and mixed it in. Thus, no longer soliciting comments on previous problem. Yet, I think the warning still maybe useful re Rails and comments modeling. Lille On Mar 19, 10:12?am, Lille <lille.pengu... at gmail.com> wrote:> Hi, > > I just ran into kind of an issue with child models in a one-to-one > relationship who are also in a polymorphic association, i.e., their > foreign key is kept by another model, e.g., ''Comment''. > > So, the path for a child might be "human_parents/1/child", while the > path to the polymorphic association would be "human_parents/1/child/ > comments". (Imagine that there are many kinds of parents, all capable > of only one child, e.g., "kangaroo_parents/1/child".) > > The problem, I''ve found, is that a relatively efficient approach to > controlling the Comment model, i.e., having a CommentController, is > not fully testable under rspec-rails, bc the routes are unique within > the CommentController spec file only by their params. So, when I do > say ''get :new, :human_parent_id=>2'' I can''t further specify the action > on the child, e.g., ''get new comment for the child''. > > >From a rspec-rails testing perspective, then, this should make you > > prefer to distribute the comment controller actions among the child > controllers and not, as is often proposed, in a single controller. > > If anyone has any thoughts on how I can in fact, run around this > problem and keep my CommentController, please write. > > Lille > _______________________________________________ > rspec-users mailing list > rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users