- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在 Ruby on Rails 上使用 ActiveRecord 和 oracle 适配器。尝试删除行时出现 StatementInvalid Exception
。
这是我的 table 的样子:room_user_table
room | user
1010 | a
1010 | b
1011 | a
1011 | c
1011 | d
我的 ruby ActiveRecord 类:
class RoomUserTable < ActiveRecord:Base
self.table_name = 'room_user_table'
end
例如,现在我想删除第二行,所以我发出
RoomUserTable.destroy_all(:room => 1010, :user => 'b')
但这是抛出 ActiveRecord::StatementInvalid 异常
OCIError: ORA-01741: illegal zero-length identifier: DELETE FROM "ROOM_USER_TABLE" WHERE "ROOM_USER_TABLE"."" = :a1
如有任何帮助,我们将不胜感激。
我的测试 Controller .rb
class TestController < ActionController::Base
def test
RoomUserTable.destroy_all(:room => 1010, :user => 'b')
end
end
最佳答案
您的 RoomUserTable
没有主键,这导致它运行您在问题 WHERE "ROOM_USER_TABLE".""= ...
这反过来又导致 Oracle 抛出一个不稳定的问题。 Rails 模型需要有主键。
该表看起来像一个连接表,因此您根本不需要为其创建模型或直接查询它。您可以在 User
和 Room
之间使用 has_and_belongs_to_many
关系并指定连接表。
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
或类似的。
编辑 - 已经说过您的用户列中有 a
、b
等,所以我不知道那个表是什么,但问题仍然是同样,您没有主键。
关于ruby-on-rails - ActiveRecord destroy_all 抛出 StatementInvalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720312/
我从来没有在任何浏览器上使用“删除”按钮时遇到过任何问题,但有 2 个用户对此提示 - 他们点击了该按钮,但没有任何反应。其中一位用户过去没有遇到过任何按钮问题。代码看起来没问题,没有生成任何错误。所
如何运行 destroy_all在阵列上? 我有以下查询: spam_users = User.find_by_sql("SELECT * FROM users WHERE email ~* '21c
下面是我们使用 rails 3.1.6 在 mysql 5.5 上执行的代码 Model.transaction do model.events.destroy_all 2.times { m
在 Rails 4.1 中,ActiveRecord destroy_all 是否将整个函数包装在一个事务中?例如,如果我有一堆记录,我对其执行了 destroy_all 操作,它们对这些单独的对象运
我有一个简单的 Rails 应用程序,其中包含在 MySQL 5.5、Ruby 1.9.3 和 Rails 3.2.12 上运行的文章和评论: class Article a = Article.f
我正在寻找从表中删除记录的最佳方法。例如,我有一个用户,其用户 ID 跨多个表。我想删除这个用户和所有表中有他 ID 的每条记录。 u = User.find_by_name('JohnBoy') u
有没有更快的方法来销毁 rails 中的所有内容? 我问这个是因为 rails 对每条记录执行单独的删除 sql 查询。 例如,在搜索 4 条记录时调用 destroy all 将运行 4 条删除 s
我在 Ruby on Rails 上使用 ActiveRecord 和 oracle 适配器。尝试删除行时出现 StatementInvalid Exception。 这是我的 table 的样子:r
我想运行 Alarm.destroy_all,但是,每个警报都关联到许多 AlarmEvent,每个 AlarmEvent 都关联到许多AlarmEvent::Measurement,两个关联都标记为
我的 Rails 4 应用程序中有一个用户模型。 我已经进入我的控制台并完成了: User.destroy_all User.count 向我验证没有用户。然后我尝试再次注册,这是我被允许的,但是一旦
注意一切都在本地环境中工作 这是代码 PublicActivity::ORM::ActiveRecord::Activity.class_eval do attr_accessible :refere
我正在开发一个具有以下 cucumber 步骤的项目: Given /^no registered users$/ do User.delete_all end 作为一个新的 RoR 用户,这看起
现在我有: PollVote.destroy_all(:user_id => record.user_id, :poll_id => record.poll_id) 有什么方法可以找回已删除的号码吗?
我有一个看起来像这样的 rake 任务: desc "Cleanup Snippets with Empty Diffs" task cleanup_snippets_with_empty_diffs
你知道这个练习:一些无效的数据在生产数据库中弹出,你必须摆脱它。您在生产服务器上启动 Rails 控制台并输入查询: Foo.where(bar: 'baz').all 您查看返回的数据,这是您需要删
我在我的网站上为我的用户消息线程功能使用“acts_as_tree”插件。我有一种方法可以删除选定的消息。这些消息实际上并没有被删除。它们的 sender_status 或 recipient_sta
我是一名优秀的程序员,十分优秀!