我正在使用Ruby on Rails 3.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
检索有序类别?有可能吗?
Bonus :由于:category_associations
和:positioned_category_associations
的语句几乎相同(:order => :position
除外),是否可以重构:positioned_category_associations
语句那么干(不要重复自己)代码?