Why not use becomes?



link_to "posts", [student.becomes(User), :posts]




That would force the object to become a User, so you would only need routes for 
users and not its subclasses.

On Wed, Oct 9, 2013 at 9:43 PM, Francesco Boffa <fra.bo...@gmail.com>
wrote:

> I would like to contribute to Rails. Specifically I'd like to add a 
> feature, and before I write any code I'd like to receive some feedback from 
> you guys.
> When using Single Table Inheritance, all path/url helpers for the parent 
> resource will not work for the child resources. For example:
> class User < ActiveRecord::Base
> end
>  
> class Student < User
> end
>  
> class Professor < User
> end
>  
> u = User.create
>> s = Student.create
>> p = Professor.create
>> link_to 'User', u      # user_path(u)
>> link_to 'Student', s   # student_path(s)
>> link_to 'Professor, p  # professor_path(p)
>> form_for u             # user_path(u)
>> form_for s             # student_path(s)
>> form_for p             # professor_path(p)
> Let's see what happens when I add a nested resource named posts to User
> class User < ActiveRecord::Base
>     has_many :posts 
> end
>> form_for [ u, Post.new ]            # user_posts_path 
>>
> form_for [ s, Post.new ]            # student_posts_path 
>> form_for [ p, Post.new ]            # professor_posts_path  
> It might look good and obvious, but now see the routes:
> resources :users do
>     resources :posts 
> end
>> resources :students do
>     resources :posts 
> end
>> resources :professors do
>     resources :posts 
> end
> And if I add other nested resources the repetition will grow larger and 
> larger. On StackOverflow I was answered to use a loop
> [ :users, :students, :professors ].each do |name|
>>     resources name do
>>         resources :posts
>>     end
>> end
> While this might be the intended behaviour, I can't see a reason why the 
> nested post route needs to have 3 helpers when it is owned from the parent. 
> I was also suggested to use the *url *option in form_for to specify the 
> parent path. However this will not work when polymorphic associations are 
> used.
> My solution? Instead of creating tons of unnecessary paths, extend the :*as 
> *option of resources to be an Array, and allow many path helpers to be 
> mapped to the same route. So that we can write:
> resources :user, as: [ 'users', 'students', 'professors' ] do
>>     resources :posts
>> end
> This code should generate all the set of routes for the users resources. 
> And generate 3 sets of path helpers. users_path, students_path and 
> professors_path will all point to /users for example.
> Do you think this will be useful to someone other than me? Do you believe 
> that DHH would allow such a thing :) ?
> Thank you for your attention.
> -- 
> 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 rubyonrails-core+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-core@googlegroups.com.
> Visit this group at http://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
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 rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to