Ruby on Rails - ActiveRecord验证存在是否为self.preference.present?'不起作用

时间:2016-08-13 23:04:12

标签: ruby-on-rails activerecord rails-activerecord

我想写一个优先验证。如果此用户的偏好记录存在,它应该验证:city(与belongs_to相关联)的存在。

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 个答案:

答案 0 :(得分:1)

您可以使用它来验证字段的存在。

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

它不会让活动记录为用户模型保存空值:city。