如何使用lambda函数验证范围内的唯一性

Cyr*_*rus 1 validation ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我正在尝试验证video_id相对于session_id的唯一性.我不知道我做错了什么.这是我的模型代码.

class SessionWatchHistory < ActiveRecord::Base
  validates_presence_of :session_id, :on => :create, :message => "can't be blank"
  validates_presence_of :video_id, :on => :create, :message => "can't be blank"

  belongs_to :video, :class_name => "Video", :foreign_key => "video_id"

  scope :per_session, lambda{ |s| where("session_id = :session", :session => s)}
  validates_uniqueness_of :video_id, :scope => [:per_session]
end
Run Code Online (Sandbox Code Playgroud)

Pet*_*own 5

如果要使用其他字段验证字段的唯一性,则需要将其他字段放在范围中.所以相对于session_id将是:

validates_uniqueness_of :video_id, :scope => [:session_id]
Run Code Online (Sandbox Code Playgroud)

  • @Cyrus这里的内容是`scope`不是在寻找AR范围.;) (2认同)