Setting model association `source_type` to polymorphic object

20 views
Skip to first unread message

UG

unread,
Feb 10, 2020, 5:45:41 AM2/10/20
to Ruby on Rails: Talk
I am trying to setup a way for my `User` and `Project` model to both be followed through the same `Relationship` model.

I also want to be able to get all items the user has followed with this association:
`has_many :following, through: :active_relationships, source: :followable, source_type: "Followable"`


This way, the projects and users any user has followed can be called with `user.following`. In this case, `Followable` is the polymorphic object that is attributed to both users and projects. Unfortunately, it seems that I cannot set my source_type to a polymorphic object. Is there a way I can bypass this?

Many thanks


Momeas Interactive

unread,
Feb 18, 2020, 12:59:15 PM2/18/20
to Ruby on Rails: Talk
I don't think polymorphism in Rails can work that way 

did you try


`has_many :users_following, through: :active_relationships, source: :followable, source_type: "FollowableUser"`

`has_many :projects_following, through: :active_relationships, source: :followable, source_type: "FollowableProject"`

UG

unread,
Feb 18, 2020, 1:13:22 PM2/18/20
to Ruby on Rails: Talk


On Tuesday, February 18, 2020 at 6:59:15 PM UTC+1, Momeas Interactive wrote:
I don't think polymorphism in Rails can work that way 

did you try


`has_many :users_following, through: :active_relationships, source: :followable, source_type: "FollowableUser"`

`has_many :projects_following, through: :active_relationships, source: :followable, source_type: "FollowableProject"`



Yeah I guess that would work. I would need to change a lot in my code but yeah I could do that. It's too bad if you can't do it in Rails
Reply all
Reply to author
Forward
0 new messages