ActiveRecord 4ユーザーのユーザー:注文と:
-
20-12-2019 - |
質問
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
の部分を無視することができます。
所属していません StackOverflow