2009-10-16 6 views
0

나는 네 가지 속성을 가지는 간단한 프로젝트 모델을 만들었습니다 : 나는에 프로젝트을 저장하려고 할 때, 이제모델의 "완료"속성에 특별한 의미가 있습니까?

class Project < ActiveRecord::Base 
    validates_presence_of :name, :description, :complete 
end 

:

Project name:string description:text complete:boolean user_id:integer 

그런 다음 모델에 약간의 유효성 검사를 추가 irb, 허용되지 않음 :

>> r = Project.new(:name => 'Name', :description => 'Description', :complete => false) 
=> #<Project id: nil, name: "Name", description: "Description", created_at: nil, updated_at: nil, complete: false, user_id: nil> 
>> r.save 
=> false 

나는 검증 요구 사항, 네? 내가 사실완벽한 속성을 변경하면, 나는 개체를 저장 할 수 있어요 :

>> r.complete = true 
=> true 
>> r.save 
=> true 

내가 여기서 무슨 일이 일어나고 있는지 볼 수 없습니다. 완료 속성은 Rails 프로젝트에서 특별한 의미가 있습니까?

답변

1

validates_presence_of와 부울 값과 더 관련이 있습니다. 명명 된 속성 중 하나라도 공백을 반환하면 저장 호출을 차단합니다. 방법.

"".blank? => true 
[].blank? => true 
false.blank? => true 
nil.blank? => true 

당신은 같은 완전성을 확인하기 위해 다른 유효성 검사를 사용해야합니다 : 속임수를 썼는지

class Project < ActiveRecord::Base 
    validates_presence_of :name, :description 
    validates_inclusion_of :complete, :in => [true, false] 
end 
+0

, 감사합니다. 나는 그것이 비관적 인 느낌이라면 버그로 볼 수 있습니다 :) – chrishunt

+0

이것은 버그가 아니며 기능입니다. – EmFi

관련 문제