一个表的记录关联在另一个表中

时间:2012-01-08 10:18:15

标签: sql ruby-on-rails

我有:

两个数据库表:

 Users: id, title
 Infos: id, type, user_id_createdby, user_id_addressedto, text

<小时/> 在Infos中,我有关于设置用户之间会议日期的记录:

Infos record: id: 1, type: "nextmeeting", user_id_createdby: 47, user_id_addressedto: 51,  text: "2011/01/13"

在“nextmeeting”旁边我在用户之间也有其他类型的数据

<小时/> 当用户登录时,我通过收集来向他显示与他开会的用户列表:唯一user_id_addressedto current_user => user_id_createdby
从信息到数组@repilents,然后是User.find(:all, :conditions => {:id => @repilents})


问题:

如何按Infos.text中的日期对用户列表进行排序,其中type:“nextmeeting”?

这样的:

  • 用户4 - 2011/01/05
  • 用户8 - 2011/01/13
  • 用户2 - 2011/01/21
  • 用户5 - 未定义下次会议
  • 用户3 - 未定义下次会议

1 个答案:

答案 0 :(得分:0)

如果您确定Infos中只有一行具有“nextmeeting”类型,则可以使用左外连接将用户链接到会议:

@users = User.joins("LEFT OUTER JOIN infos ON infos.user_id_createdby = users.id")

按降序排序:

@users = User.joins("LEFT OUTER JOIN infos ON infos.user_id_createdby = users.id").order("infos.text DESC")

现在有些随机评论:

  • type是保留字,不应将其用作列名(http://stackoverflow.com/questions/2293618/rails-form-not-saving-type-field-newbie)< / p>

  • 将日期存储为文字会让您的生活变得困难

  • 您可能需要重新考虑此通用“信息”列,并制作一个独特的会议模型。