예를 들어 모델 아티클이 있습니다. Article has_one ArticleContent. ArticleContent는 기본적으로 모든 속성을 검증합니다. 하지만 추가 기능이 필요합니다. 즉, 유효성 검사없이 드래프트 아티클을 저장해야합니다. 그래서 Article : new()의 매개 변수 중 하나 인 draft => false를 전달하고, 다음으로 @ article.build_article_content()를 수행합니다. ArticleContent에는 작동하지 않는 코드가 있습니다.상위 속성에 의한 ActiveRecord 유효성 확인
def draft?
raise self.article.draft
end
validates_presence_of :header, :message => "We have no fuckin' header!", :unless => :draft?
물론 작동하지 않습니다. 초안의 순간에? 실행 아무 곳에서나 적절한 Article 객체가 없으므로 self.article은 nil을 반환합니다. 좋은 시도, codemonkey ...
누구나 달콤한 아이디어가 있습니까? 나는 @ content.save를 만드는 것을 생각한다! 아니 내가 그렇게 노력
아주 좋은 생각
UPDATE입니다 :
def draft
self[:draft]
end
def draft=(value)
self[:draft] = value
end
def draft?
self[:draft]
end
validates_presence_of :field1, :message => "msg1", :unless => :draft?
validates_presence_of :field2, :message => "msg2", :unless => :draft?
validates_presence_of :field3, :message => "msg3", :unless => :draft?
그것은 작동하지만, 내가 어떻게이 그룹 수 있습니까?
unless self.draft?
validates_presence_of :field1, :message => "msg1"
validates_presence_of :field2, :message => "msg2"
validates_presence_of :field3, :message => "msg3"
end
초안을 말하고 있습니까? 메서드를 찾을 수 없습니다. 또한 내가
@article.content.draft = @article.draft
을해야 그리고 그것은 더러운 더러운 해킹 너무
죄송합니다, 방금 업데이트를 보았습니다. – noodl