2016-08-13 99 views
0

我想寫一個首選項的驗證。如果此用戶的首選項記錄存在,它應驗證城市(與belongs_to關聯)的存在。Ruby on Rails - ActiveRecord驗證存在如果'self.preference.present?'不工作

user.rb

# attributes 
# :city, :string 
has_one :preference 

preference.rb

# attributes 
# preferred_car_brand 
belongs_to :user 

我嘗試這樣做,但記錄得到保存沒有錯誤。

user.rb

validates :city, presence: true, if: :user_preference_exists 

def user_preference_exists 
    self.preference.present? 
end 

回答

1

您可以使用它來驗證字段的存在。

class User < ActiveRecord::Base 
    validates :city, presence: true 
end 

它不會讓活動記錄保存具有空值的用戶模型:城市。

+0

我錯過了說偏好應該是一個「可選關係」。有用戶喜歡,沒有偏好的用戶。我只想驗證用戶是否有偏好。我更新了這個問題。 –

+0

我在模型中發現了一個錯誤,那個城市並不是空白的,因此驗證不會產生錯誤,您的方法可行! –

相關問題