Rails 询问一个 SQL 语句怎么转成 ActiveRecord 的写法

lin_style · 发布于 2012年04月27日 · 最后由 lin_style 回复于 2012年05月02日 · 2048 次阅读
96
select * from users_messages t1  left join messages t2 on t1.message_id = t2.id where t1.id=20


共收到 12 条回复
96

class UsersMessages has_many :messages end

UsersMessages.find(20).messages

大概是这样吧。

292
joins("left join messages on users_messages.message_id = messages.id").where("users_messages.id=20")

貌似你应该把这2个表关联起来,关联之后就可以joins(:message)了

96

有点复杂的建议还是用SQL语句

96

我是觉得如果库更换不频繁,还不如就直接写SQL。。

96

ActiveRecord::Base.connection.select("select * from users_messages t1 left join messages t2 on t1.message_id = t2.id where t1.id=20")

775

这个时候就显示出Sequel的可贵之处了

irb> DB[:user_messages_t1].left_join(:messages_t2).where(:"t1.id" => 20).sql

"SELECT * FROM user_messages As t1 LEFT JOIN messages AS t2 WHERE (t1.id = 20)"

96

#8楼 @nouse 有什么可贵呢?指教

96

#7楼 @oncity 有个问题。。查出来的集合如何用呢? 直接.name ,提示hash错误

96

#10楼 @lin_style 没有建 model ,不会有 .name 访问,用 hash 不行吗,不是更节省。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册