Rails按类别对帖子进行排序

时间:2014-01-03 14:32:55

标签: ruby-on-rails ruby sorting ruby-on-rails-4

在线和其他地方进行尽职调查后,我仍然无法根据其类别对帖子(视图和控制器)进行排序。

我有三个模型:DesignCategoryType

Design.rb

belongs_to :type

Category.rb

has_many :designs
has_many :types, :order => "name"

Type.rb

belongs_to :category
belongs_to :design

如果需要在这里更改某些内容,请详细说明。

在开始此搜索以找到对帖子进行排序的答案之后,我遇到了另一个问题,我将在另一个问题中提出这个问题,但为了以防将在此处公开。在命令行中,如果我搜索某个类别,我会得到类别,但也会收到警告:

DEPRECATION WARNING: The following options in your Category.has_many :types declaration are deprecated: :order. Please use a scope block instead.

当我搜索Type I时会收到此警告:

DEPRECATION WARNING: Using #scope without passing a callable object is deprecated. For example `scope :red, where(color: 'red')` should be changed to `scope :red, -> { where(color: 'red') }`.

无论如何,在我当前的应用中,类别为menwomen,类型包括accessories, shirts, tops, jackets, etc等等。当用户创建设计时,他们可以选择具有以下标题的类型:

Men
  Accessories
  Jackets
  etc
Women
  Accessories
  Dresses
  etc

在我看来,我希望用户能够按男性或女性(类别)对帖子进行排序,甚至可以Type进一步排序,例如Women's AccessoriesMen's Accessories

类别和类型都可以通过ID或字符串找到。

如果我能提供其他任何帮助,请告诉我,我会尽可能多地加入。感谢。

1 个答案:

答案 0 :(得分:3)

在Rails 4中,您将条件传递到块中的has_manybelongs_to等:

has_many :types, -> { order("name") }

然后,当访问该关联时,将在该关联上调用该块,例如:

my_category.types

# would return the same result as
my_category.types.order("name")