1

У меня есть довольно нормальная структура класса, используя полиморфные ассоциации:: условия Устаревших в Rails 4, нужны новый полиморфный синтаксис для доступа к родителю

class Contact < ActiveRecord::Base 
    has_many :opportunities, :as => :has_opportunities, dependent: :destroy 
end 

class Company < ActiveRecord::Base 
    has_many :opportunities, :as => :has_opportunities, dependent: :destroy 
end 

class Opportunity < ActiveRecord::Base 
    belongs_to :has_opportunities, polymorphic: true 
    belongs_to :contact, foreign_key: 'has_opportunities_id', conditions: "opportunities.has_opportunities_type = 'Contact'" 
    belongs_to :company, foreign_key: 'has_opportunities_id', conditions: "opportunities.has_opportunities_type = 'Company'" 
end 

В Rails 4 с помощью: условия устарели, но я не могу 'Определите «новый» синтаксис, необходимый для доступа к родительскому объекту из дочернего элемента.

Edit: Да, вы можете сделать opportunity.has_opportunities, который будет возвращать вам контакт или компании, но часто «лучше» в коде использовать opportunity.contact или opportunity.company

+0

a вопрос стороны, условия на принадлежит_to должны находиться в ассоциации, а не сама модель. Так, как это работает? Я попробовал модель, которую у меня есть, и она дает мне ошибку, что имя столбца не найдено. – tihom

+0

IT будет работать с бит, который я пропустил для краткости ... редактируя его сейчас ... –

+0

принадлежит_to: has_opportunities, полиморфный: true –

ответ

0

Не можешь просто установите его как регулярную полиморфную ассоциацию?

class Opportunity < ActiveRecord::Base 
    belongs_to :has_opportunities, polymorphic: true 
end 
+0

Простите, это уже есть (сокращено для краткости) ... и можно использовать Opportunity.has_opportunities получить родителя ... это просто «лучше»: если Opportunity.contact и т. д. и т. д. –

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