hexawing 2009-02-01 20:10
浏览 194
已采纳

ROR中,如果才能删除连接表(无id字段)里的某条数据?

比如有一个表,是用户users,另外有一个表是角色表roles,然后建立了一个连接表roles_users,包含两个字段role_id和user_id。
想在roles_users中新增数据很容易:
[code="java"]
test=RolesUser.new
test.user_id=1
test.role_id=5
test.save
[/code]
但怎样删除某条数据呢?……需要“id”啊,连接表只有两个字段,没有自己的id的说……
只能加上id这个字段然后用:through那个东东么?
[b]问题补充:[/b]
find(1)是返回不了值的,因为没有id=1的数据,甚至都没有id这个东西,因为它是一张纯的连接表……
[b]问题补充:[/b]

delete_all真的可以,太好了……

user = User.find(:id)
role.users.delete(user)

role.save #就可以把在roles_users表中user.id 和 role.id 相关联的那行记录给删除了

这位老大提供的方法看起来也有点像,但语法不对……第二行说没有一个叫“role”的方法,我换成Role也不行,按RDoc里写了个“#”也不行……

  • 写回答

5条回答 默认 最新

  • 雨宣 2009-02-05 11:52
    关注

    那就用delete_all,可以接受要删除的范围条件

    例如:[code="ruby"]

    RolesUser.delete_all("user_id like '%1%'")

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答