1

Ruby onRails3.2.2を使用しています。私は次の協会を持っています:

class Article < ActiveRecord::Base
  has_many :category_associations,
    :class_name => 'CategoryAssociation'

  # Note: Same as :category_associations but gets records ordered by :position.
  has_many :positioned_category_associations,
    :class_name => 'CategoryAssociation',
    :order      => :position

  has_many :categories,
    :through    => :category_associations,
    :source     => :category

  # Note: Same as :categories but gets records ordered by :position.
  has_many :positioned_categories,
    :through    => :category_associations,
    :source     => :category,
    :order      => [:category_associations => :position]
end

上記のコードを使用すると@article.positioned_categories、カテゴリを呼び出して、位置別に適切に並べ替えることができます。ただし、取得するためにを使用したいのですが:positioned_category_associations:positioned_categories、次のように述べた場合:

class Article < ActiveRecord::Base
  ...

  has_many :positioned_categories,
    :through    => :positioned_category_associations,
    :source     => :category

  # instead of
  #
  # has_many :positioned_categories,
  #   :through    => :category_associations,
  #   :source     => :category,
  #   :order      => [:category_associations => :position]
end

期待どおりに機能しないようです。カテゴリが注文されていません。

順序付けられたカテゴリを取得する方法は:positioned_category_associations?出来ますか?


ボーナス:category_associations:positioned_category_associationsはほぼ同じステートメント(を除く)があるので、コードをDRY(Do n't Repeat Yourself)するようにステートメント:order => :positionをリファクタリングすることは可能ですか?:positioned_category_associations

4

0 に答える 0