如何通过有序关联检索有序对象?

时间:2012-10-03 10:21:10

标签: ruby-on-rails ruby ruby-on-rails-3 sorting associations

我正在使用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语句那么干(不要重复自己)代码?

0 个答案:

没有答案