我目前有以下方法:
def complete?
attributes.delete_if{|k,v| k == 'id' or k == 'user_id'}.values.each do |value|
return false if value.blank?
end
true
end
有更好的方法吗?我只是想知道,在我的实例中,是否已将所有属性与id和user_id区分开来。必须有更好的方法来做到这一点。
我在rails 3和ruby 1.9.3上(只是因为人们不会给出适用于新版本的答案)
答案 0 :(得分:7)
有validates
方法可以做到这一点:
class User < ActiveRecord::Base
validates :full_name, :username, :email, :address, presence: true
如果要验证除少数属性之外的所有属性的存在:
class User < ActiveRecord::Base
validates *(self.column_names - ['id', 'created_at', 'updated_at']), presence: true
以上示例扩展:
class User < ActiveRecord::Base
validates *self.validable_columns, presence: true
def self.validable_columns
excluded_columns = ['id', 'created_at', 'updated_at'] # columns to be excluded in the `validates`
self.column_names - excluded_columns
end