首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord destroy_all throws

ActiveRecord destroy_all throws
EN

Stack Overflow用户
提问于 2013-07-18 10:00:49
回答 3查看 1.3K关注 0票数 3

我在Rails上使用带有oracle适配器的ActiveRecord。当我试图删除一行时,我得到了一个StatementInvalid Exception

下面是我的桌子的样子:room_user_table

代码语言:javascript
复制
room | user
1010 | a
1010 | b
1011 | a
1011 | c
1011 | d

我的红宝石ActiveRecord类:

代码语言:javascript
复制
class RoomUserTable < ActiveRecord:Base
    self.table_name = 'room_user_table'
end

现在我想删除第2行,所以我要发出

代码语言:javascript
复制
RoomUserTable.destroy_all(:room => 1010, :user => 'b')

但这将引发ActiveRecord::StatementInvalid

代码语言:javascript
复制
OCIError: ORA-01741: illegal zero-length identifier: DELETE FROM "ROOM_USER_TABLE" WHERE "ROOM_USER_TABLE"."" = :a1

任何帮助都将不胜感激。

我的test_controller.rb

代码语言:javascript
复制
class TestController < ActionController::Base
    def test
       RoomUserTable.destroy_all(:room => 1010, :user => 'b')
    end
end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 12:01:19

您的RoomUserTable没有主键,这导致它运行您在问题WHERE "ROOM_USER_TABLE"."" = ...中的查询,而这反过来又导致WHERE "ROOM_USER_TABLE"."" = ...抛出一个抖动。Rails模型需要有主键。

该表看起来像一个连接表,因此您根本不需要为它创建模型或直接查询它。您可以在UserRoom之间使用一个Room关系,并指定连接表。

代码语言:javascript
复制
class Room < ActiveRecord::Base
  has_and_belongs_to_many :users, join_table: :room_user_table
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :rooms, join_table: :room_user_table
end

或者类似的。

编辑-在您的用户列中有ab等,所以我不知道该表是什么,但是问题仍然是一样的,您没有主键。

票数 1
EN

Stack Overflow用户

发布于 2013-07-18 10:03:05

若要删除simgle记录,请执行以下操作

代码语言:javascript
复制
RoomUserTable.where(:room => 1010, :user => 'b').first.destroy

我建议这样做的原因是因为它比destroy_all安全,但只有在尝试删除单个记录时才有意义。

当然,最好的办法是通过id找到一份记录。

这也应该有效,但考虑到你的问题,我不确定。

代码语言:javascript
复制
RoomUserTable.where(:room => 1010, :user => 'b').destroy_all
票数 0
EN

Stack Overflow用户

发布于 2013-07-18 10:23:08

尝尝这个

代码语言:javascript
复制
RoomUserTable.where(:room => 1010, :user => 'b').first.destroy
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17720312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档