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