我的模型如下:
class EntityTag < ActiveRecord::Base
attr_protected :user_id, :post_id, :entity_id
belongs_to :user
belongs_to :post
belongs_to :entity
validates :user_id, :presence => true
validates :entity_id, :presence => true
validates :post_id, :presence => true
end
我想防范多个具有相同user_id,entity_id和post_id组合的行(例如,行的唯一ID就是这三个值)。
我能与ActiveRecord沟通的最简单方法是什么?
答案 0 :(得分:7)
正如@dhruvg所说:
validates_uniqueness_of :user_id, :scope => [:entity_id, :post_id]
请注意,模型级别的唯一性验证不保证数据库中的唯一性。要有这个,你应该在你的桌子上放一个唯一的索引。
将以下内容添加到迁移中。
add_index :entity_tags, [:user_id, :post_id, :entity_id], :unique => true
答案 1 :(得分:0)