0

Рассмотрим класс:Рельсы полиморфных ассоциаций, два типа ассоциативный в одном классе

class Link < ActiveRecord::Base 

    has_many :link_votes, :as => :vote_subject, :class_name => 'Vote' 
    has_many :spam_votes, :as => :vote_subject, :class_name => 'Vote' 

end 

Проблема заключается в том, когда я добавляю новый голос с @link.link_votes << Vote.newvote_subject_type является 'Link', в то время как я хочу это может быть 'link_votes' или что-то типа того. Является ли это ограничением AR или существует способ обхода этой вещи?

Я на самом деле нашел один связанный ответ, но я не совсем уверен, что он говорит: Polymorphic Association with multiple associations on the same model

ответ

0

Похоже, вы хотите использовать Single Table Inheritance - это позволит вам иметь два различных типа Голоса. Это добавит столбец «типа» в таблицу голосов, которые вы затем получить доступ как LinkVote или SpamVote

class SpamVote << Vote 
    ... 
end 

Вдоль этих линий.

class Link < ActiveRecord::Base 

    has_many :link_votes, :as => :vote_subject 
    has_many :spam_votes, :as => :vote_subject 

end 

В таблице Проголосовали вы увидите столбцы, как:

id, type, vote_subject_type, vote_subject_id, etc. 

Делайте больше исследований на ИППП, и я уверен, вы найдете ответ на свой вопрос.

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

  • Нет связанных вопросов^_^