大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 验证多态关联模型中的范围唯一性,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class Favorite < ActiveRecord::Base belongs_to :favoritable,:polymorphic => true belongs_to :user attr_accessible :user validates_presence_of :user validates :user_id,:uniqueness => { :scope => [:favoritable_type,:favoritable_id] } end
验证似乎正在工作,但无论如何,当尝试复制条目时,仍然使用user_id创建一个新的“最爱”行.
有没有办法停止这个初始保存?
看来,Rails正在创建DB条目,然后使用favoritable_id和favoritable_type更新它,如下所示:
SQL (28.3ms) INSERT INTO "favorites" ("created_at","favoritable_id","favoritable_type","updated_at","user_id") VALUES ($1,$2,$3,$4,$5) RETURNING "id" [["created_at",Tue,14 Aug 2012 10:26:31 UTC +00:00],["favoritable_id",nil],["favoritable_type",["updated_at",["user_id",23]] (7.8ms) COMMIT (0.1ms) BEGIN Favorite Exists (0.3ms) SELECT 1 AS one FROM "favorites" WHERE ("favorites"."user_id" = 23 AND "favorites"."id" != 123 AND "favorites"."favoritable_type" = 'Style' AND "favorites"."favoritable_id" = 29) LIMIT 1 (0.2ms) UPDATE "favorites" SET "favoritable_id" = 29,"favoritable_type" = 'Style',"updated_at" = '2012-08-14 10:26:31.943937' WHERE "favorites"."id" = 123 (6.7ms) COMMIT (0.1ms) BEGIN
validates :user_id,:favoritable_id] }
看看你添加的数据图像.内部的形象,你可以发现,第二个记录是没有好处,而首先有哪些是不同的,因此2个记录是单一的,它不是唯一性的问题,而是你的逻辑差距.
如果你严格要避免第二次入境,那么请保持好意
validates :favoritable_type,:favoritable_id,:presence => true
以上是大佬教程为你收集整理的ruby-on-rails – 验证多态关联模型中的范围唯一性全部内容,希望文章能够帮你解决ruby-on-rails – 验证多态关联模型中的范围唯一性所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。