打印

[求教]关于数据库中or在ROR中的处理方法

[求教]关于数据库中or在ROR中的处理方法

这段时间做的东西 有时候涉及到以下问题 不知道有没有好一些的解决方法
user has_many :messages
message belongs_to :user

取出单个user的所有messages
@user = User.find(1)
@messages = @user.messages.find(:all,rder=>"Updated_at DESC")

但是我现在要取出多个user的所有messages应该如何去做?
@user = User.find(1,2,3)
这样的情况我现在是用的是写个循环
但是这样 取出记录集的排序就乱了
会变成
user1的message1 时间1:00
user1的message2 时间2:00
user2的message3 时间5:00
user2的message4 时间3:00
user3的message5 时间4:00

而我现在要的是根据时间排序
user1的message1 时间1:00
user1的message2 时间2:00
user2的message4 时间3:00
user3的message5 时间4:00
user2的message3 时间5:00

其实这个在SQL中应该就是 select * from message where user_id = 1 or user_id = 2 or user_id=3 order by Updated_at DESC

但是面向对象的写法 应该如何能够实现这样的功能? 请教...

TOP

感觉是不是要用到
has_and_belongs_to_many
来实现?

TOP

复制内容到剪贴板
代码:
SELECT *
FROM messages
JOIN users ON messages.user_id = users.id
where messages.user_id in (1, 2, 3)
ORDER BY messages.updated_at DESC
如果用 rails 写,就是
复制内容到剪贴板
代码:
@messages = Message.find( :all, :conditions => ['user_id in (?)', [1, 2, 3]], :order => 'messages.updated_at DESC' )
[ 本帖最后由 hozaka 于 2008-5-23 14:53 编辑 ]
我就是鸡蛋黄……

TOP

原来如此

@users = User.find(:all)
@messages = Message.find( :all, :conditions => ['user_id in (?)', [@users.id]], rder => 'messages.updated_at DESC' )

请问如果这样写的话可行吗?

呵呵 非常感谢 帮我大忙了

TOP