Activerecord 4 Как пользователю: Заказать и: включить

StackOverflow https://stackoverflow.com//questions/20000189

  •  20-12-2019
  •  | 
  •  

Вопрос

Я только что обновил до RUBY 2.0, который по умолчанию загрузит Activerecord 4 для приложения Padrino. Это нормально, я хотел бы воспользоваться преимуществами улучшений Ruby 2.0 и AR 4. Тем не менее, у меня проблемы с переписыванием некоторых отношений, которые работали раньше.

Например, это больше не действительна:

  has_many :dvd_credits, :order => 'position', :include => [:dvd_actor, :dvd_role]
.

Это дает устаревшее предупреждение, но пример, который он показывает бесполезно: has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

Оглядываясь вокруг, я смог найти, что это работает, опуская параметр :include:

has_many :dvd_credits, -> { order :position }
.

Если я добавлю это так:

has_many :dvd_credits, -> { order :position, include: [:dvd_actor, :dvd_role] }
.

Я получаю эту ошибку, когда я вызываю это отношение:

ArgumentError: Direction should be :asc or :desc
.

Я все еще приезжаю, чтобы похваться с изменениями в AR 4, но действительно ценит некоторую помощь на этом.

спасибо.

PS Я нашел это на странице AR 4:

Нет необходимости использовать, включает в себя для немедленных ассоциаций - то есть, Если у вас есть заказ принадлежит_ТО: клиент, то клиент нетерпеливо загружен автоматически, когда это необходимо.

Что я понимаю, чтобы означать, что я могу безопасно игнорировать параметр include:?

Но эти отношения немного сложны, он идет так:

class Dvd < ActiveRecord::Base
  has_many :dvd_credits, -> { order :position }
  has_many :dvd_actors, :through => :dvd_credits
  has_many :dvd_roles, :through => :dvd_credits

class DvdCredit < ActiveRecord::Base
  belongs_to :dvd_actor, :inverse_of => :dvd_credits
  belongs_to :dvd_role, :inverse_of => :dvd_credits
  belongs_to :dvd, :inverse_of => :dvd_credits

class DvdActor < ActiveRecord::Base
  has_many :dvd_credits, :inverse_of => :dvd_actors
  has_many :dvds, :through => :dvd_credits
.

Но, похоже, выполняет условие генеракодицетагкода.

Это было полезно?

Решение

Да, вы можете просто игнорировать деталь :include.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top