根据关联的创建日期对关联对象进行排序

时间:2015-01-26 16:47:26

标签: mysql ruby-on-rails ruby rails-activerecord

现在,我正在开发一个简单的应用程序。它需要按照我们添加到对象的日期来获取关联对象。为此,我想根据pivot-table的id来订购它们。

我的应用看起来有点像这样:

class Product < ActiveRecord::Base
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :products
end

但是,当用户想要购买产品时,我会在数据透视表courses_users中添加新关系。然后,当我运行@product.users时,我将按照创建的用户的顺序将它们恢复,而不是作为关系添加。

我尝试过创建查询范围,但它没有用。我还尝试在has_and_belongs_to_many上创建订单,如下:

has_and_belongs_to_many :users, order: 'course_users.id ASC'

但这些似乎都不起作用,在日志中找不到ORDER语句。

1 个答案:

答案 0 :(得分:0)

将created_at字段添加到表中。

rails g migration AddTimestampsToCourseUsers created_at:datetime

然后你可以

@product.users.order "course_users.created_at ASC"