2

Я есть проблема, пытаясь объединить Rails 4, STI, полиморфные ассоциации с has_many:: черезRails 4 - STI has_many: через с полиморфной ассоциации

выпуска: UserConnection не сохраняет правильную userable_type в соответствии с STI

class UserConnection < ActiveRecord::Base 
    belongs_to :userable, polymorphic: true 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :user_connections 
    has_many :tagged_posts, through: :user_connections, class_name: 'Post', source: :userable, source_type: 'Post' 
end 

class Publication < ActiveRecord::Base 
    has_many :user_connections, as: :userable, dependent: :destroy 
    has_many :users, through: :user_connections 
end 

class Post < Publication 
end 

Post.create(user_ids: [1, 2], body: 'yo') 
UserConnection.last 
=> #<UserConnection id: 1, user_id: 2, userable_id: 44, userable_type: "Publication"> 

userable_type должно быть «Post», но это «Публикация»

Я попытался добавить следующее по всем подобным вопросам StackOverflow:

class UserConnection < ActiveRecord::Base 
    belongs_to :userable, polymorphic: true 
    belongs_to :user 

    def userable_type=(class_name) 
    super(class_name.to_s.classify.constantize.base_class.to_s) 
    end 
end 

Это не помогло.

Любые идеи будут высоко оценили

+0

У 'User' есть другие' UserConnection', которые не находятся в дереве наследования 'Publication'? возможно, полиморфный «пользовательский» здесь не нужен. – yoavmatchulsky

+0

есть. UserConnection предназначен для использования с другими классами помимо публикации. –

ответ

Смежные вопросы