У меня есть довольно нормальная структура класса, используя полиморфные ассоциации:: условия Устаревших в 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
a вопрос стороны, условия на принадлежит_to должны находиться в ассоциации, а не сама модель. Так, как это работает? Я попробовал модель, которую у меня есть, и она дает мне ошибку, что имя столбца не найдено. – tihom
IT будет работать с бит, который я пропустил для краткости ... редактируя его сейчас ... –
принадлежит_to: has_opportunities, полиморфный: true –