我的Rails应用的模型Teachers
belongs_to
Users
。 Users
has_one
Teacher
。我使用devise进行用户身份验证,因此用户模型带有一个字段:last_sign_in_at
。
在我的某个管理页面上,我想按相应用户的Teachers
时间排序last_sign_in_at
。我怎么能实现这个目标?
我以各种方式尝试了joins
,例如:
@teachers = User.joins(:teacher).order("users.last_sign_in_at")
但我还没有让他们中的任何一个工作。
答案 0 :(得分: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
提示的。