Rails和模型验证

时间:2010-02-09 22:38:04

标签: ruby-on-rails models model-validation

我想在下表中进行一些模型级验证:

create_table :audios do |t|
  t.integer :library_id, :null => false
  t.string :file, :null => false, :limit => 2048
  t.string :name, :limit => 512
  t.timestamps
end

这是否意味着,我的模型,(到目前为止)看起来像:

class Audio < ActiveRecord::Base
  belongs_to :library
end

class Audio < ActiveRecord::Base
  validates_presence_of :library
  ...

class Audio < ActiveRecord::Base
  validates_presence_of :library_id
  ...

1 个答案:

答案 0 :(得分:5)

要验证关联的存在,请使用其名称,不附加 _id

validates_presence_of :library

它将验证两件事:

  1. library_id在场
  2. 具有给定Library存在的id
  3. 使用validates_presence_of :library_id只能为您提供第一次验证。

    除此之外,没有_id的版本也会正确验证两个记录是否都是新的(因此library_id仍未设置)。