2014-05-13 2 views
1

나는 현재 다음과 같은 방법이 있습니다이 일을 더 나은 방법이모델의 모든 속성에 값이 설정되어 있는지 어떻게 확인할 수 있습니까?

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와 별도로 설정되었는지 알고 싶습니다. 이렇게하는 더 좋은 방법이 있어야합니다.

나는 레일 3에있어 및 (사람들이 새로운 버전에서 작동 답변을 제공하지 않습니다 단지 때문에)

답변

7

가 할 수있는 validates 방법이 1.9.3 루비 :

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 
+0

이제 나는 바보처럼 느껴진다. 이것은 다른 모델의 has_one이기 때문에 (부모 생성 후 내가 만드는 곳입니다) 모든 것이 채워 졌는지 확인하기 위해 유효성 검사를 사용하는 것을 결코 고려하지 않았습니다. 이것은 응용 프로그램에서 위의 모델과 완전히 별개의 페이지에 있습니다. - 그래서 당신은 내가 열매가 아니라고 생각합니다. –

관련 문제