2010-02-09 147 views
3

我希望把一些模型級的驗證下表上:Rails和模型驗證

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 
    ... 

回答

5

要驗證的關聯的存在下,使用它的名稱,而不_id所附:

validates_presence_of :library 

這將驗證兩兩件事:

  1. library_id是本
  2. 一個Library與給定id存在

使用validates_presence_of :library_id只會給你兩個的第一個驗證。

除此之外,沒有_id的版本也將正確驗證兩個記錄是否都是新的(因此library_id仍然未設置)。

+0

正是我想知道的謝謝。 – Ash 2010-02-09 22:58:43