j-d*_*exx 1 ruby ruby-on-rails ruby-on-rails-3
我目前有以下方法:
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
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?我只是想知道,在我的实例中,是否已将所有属性与id和user_id区分开来.必须有更好的方法来做到这一点.
我在rails 3和ruby 1.9.3上(只是因为人们不会给出适用于较新版本的答案)
有validates方法可以做到这一点:
class User < ActiveRecord::Base
validates :full_name, :username, :email, :address, presence: true
Run Code Online (Sandbox Code Playgroud)
如果要验证除少数属性之外的所有属性的存在:
class User < ActiveRecord::Base
validates *(self.column_names - ['id', 'created_at', 'updated_at']), presence: true
Run Code Online (Sandbox Code Playgroud)
以上例子扩展:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |