数据映射器:删除所有没有关系的记录



我将如何从数据映射器中删除表中没有关系的所有记录?有问题的表是帖子和标签表(在多对多关系中),我想删除所有没有标签的帖子。由于某种原因,尝试Post.all(:tags => nil) 时会出现此错误:

DataObjects::SyntaxError: ERROR:  operator does not exist: integer = character varying
LINE 1: ...amp", "comment_count" FROM "posts" WHERE NOT("id" IN (SELECT...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
 (code: 52461700, sql state: 42883, query: SELECT "id", "timestamp", "source_network", "source_post_id", "source_user_id", "source_link", "img_full_url", "img_thumb_url", "approved", "review_timestamp", "comment_count" FROM "posts" WHERE NOT("id" IN (SELECT "tags"."name" FROM "tags" INNER JOIN "post_tags" ON "tags"."name" = "post_tags"."tag_name" INNER JOIN "posts" ON "post_tags"."post_id" = "posts"."id")) ORDER BY "id", uri: postgres:tom@localhost/hash_tagging?scheme=postgres&user=tom&password=&host=localhost&port=&path=/hash_tagging&query=&fragment=&adapter=postgres)
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `execute_reader'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `block in read'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:141:in `read'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/repository.rb:162:in `read'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:1117:in `lazy_load'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/support/lazy_array.rb:409:in `each'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:504:in `each'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:976:in `map'
  from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:976:in `inspect'
  from /Users/tom/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'

有谁知道我做错了什么?

附言标签表只有一列(名称,是键),关系是数据映射器自动生成的关系

NOT("id" IN更改为"id" NOT IN

   DELETE FROM posts WHERE id NOT IN (SELECT id FROM tags)

最新更新