質問

Ruby 2.0にアップグレードしたばかりのものは、デフォルトでPadrinoアプリのActiveRecord 4をロードすることができます。これは問題ありません、ルビー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
.

しかしbelongs_to状態を満たすようです。

役に立ちましたか?

解決

ええ、:includeの部分を無視することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top