【问题标题】:Order index based on parent model attribute基于父模型属性的订单索引
【发布时间】:2015-12-01 06:12:42
【问题描述】:

我的 Rails 应用程序有一个模型 Teachersbelongs_to UsersUsershas_oneTeacher。我正在使用设计进行用户身份验证,因此用户模型带有一个字段:last_sign_in_at

在我的一个管理页面上,我想按相应用户的last_sign_in_at 时间对Teachers 进行排序。我怎么能做到这一点?

我尝试了多种方式joins,例如:

@teachers = User.joins(:teacher).order("users.last_sign_in_at")

但我还没有让他们中的任何一个工作。

【问题讨论】:

  • 你想得到教师,但为什么你从用户类调用一个方法?你的意思是Teacher.joins(:user)
  • @VanHuy 当然。对不起,菜鸟的错误。

标签: sql ruby-on-rails ruby activerecord devise


【解决方案1】:

如果您正确设置了模型之间的关联,并且您的 teachers 表在数据库中有一个 user_id 列 [因为 Teacher belongs_to User],那么以下应该可以工作:

@teachers = Teacher.joins(:user).order("users.last_sign_in_at ASC")

或:

@teachers = Teacher.joins(:user).order("users.last_sign_in_at DESC")

因为User.joins(:teacher).order("users.last_sign_in_at") 会返回用户,而不是教师。

Van Huy's 在评论部分也给出了提示。

【讨论】:

  • 谢谢,看来需要多练习一下 .joins 方法
猜你喜欢
  • 1970-01-01
  • 2012-06-17
  • 2014-01-07
  • 2016-07-21
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
相关资源
最近更新 更多