【发布时间】:2014-03-12 20:26:24
【问题描述】:
刚刚完成了教程,设置好了一切。当我运行命令行测试时,似乎方法正在获取正确的数据,但没有将它们保存到数据库中。
irb(main):009:0> u.flag(s, :promote)
MakeFlaggable::Flagging Load (0.0ms) SELECT "flaggings".* FROM "flaggings" WHERE "flaggings"."flagger_id" = 2 AND "flaggings"."flagger_type" = 'User' AND "flaggings"."flaggable_type" = 'Scribble' AND "flaggings"."flaggable_id" = 48 AND "flaggings"."flag" = 'promote' LIMIT 1
(0.0ms) BEGIN
SQL (0.0ms) INSERT INTO "flaggings" ("created_at", "flag", "flaggable_id", "flaggable_type", "flagger_id", "flagger_type", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["created_at", Wed, 12 Mar 2014 20:15:45 UTC +00:00], ["flag", nil], ["flaggable_id", nil], ["flaggable_type", nil], ["flagger_id", nil], ["flagger_type", nil], ["updated_at", Wed, 12 Mar 2014 20:15:45 UTC +00:00]]
(12.0ms) COMMIT
=> #<MakeFlaggable::Flagging id: 10, flaggable_type: nil, flaggable_id: nil, flagger_type: nil, flagger_id: nil, flag: nil, created_at: "2014-03-12 20:15:45", updated_at: "2014-03-12 20:15:45">
如您所见,该方法选择所有正确的数据,但只保存 nil。 有谁知道这可能是什么问题?
【问题讨论】:
-
我遇到了同样的问题,一直没能解决。
-
我真的很想解决它:)
-
如果几天内没有人回答,我会悬赏。
-
我也在 github 和 cmets 的视频教程上问过,也许 gem 的开发者之一会愿意帮忙。
-
你用的是什么版本?你能分享整个项目吗(我想这只是教程)或者至少是 Gemfile。因为您的项目生成的 SQL 不同于您可以在新项目中获得的 SQL:
SELECT "flaggings".* FROM "flaggings" WHERE "flaggings"."flagger_id" = 1 AND "flaggings"."flagger_type" = 'User' AND "flaggings"."flaggable_type" = 'Article' AND "flaggings"."flaggable_id" = 1 LIMIT 1。有些东西正在将AND "flaggings"."flag" = 'promote'与条件混合在一起。
标签: ruby-on-rails postgresql ruby-on-rails-3 voting-system