Rails 모델에 대한 특성이 중첩되어 있으며 어떤 이유로 연결 유효성 검사가 실패합니다. 나는 accepts_nested_attributes_for를 사용하지 않지만, 비슷한 것을하고 있습니다.Rails 중첩 된 특성 연결 유효성 검사 실패
class Project < ActiveRecord::Base
has_many :project_attributes
def name
project_attributes.find_by_name("name")
end
def name=(val)
attribute = project_attributes.find_by_name("name")
if attribute
attribute.value = val
else
project_attributes.build(:name=>"name", :value=>val)
end
end
end
class ProjectAttribute < ActiveRecord::Base
belongs_to :project
validates_presence_of :name
validates_uniqueness_of :name, :scope => :project_id
validates_presence_of :project_id, :unless => lambda {|attribute| attribute.project.try(:valid?)}
validates_associated :project
end
이것은 의도 한 예이지만 내가하려는 것과 비슷합니다. accepts_nested_attributes_for가하는 일을 살펴 봤는데 빌드 된 속성을 프로젝트와 연관 짓는 build 메소드를 사용합니다.
는 또한 나에게이 작업을 할 수있는 방법을 validates_presence_of :unless=>valid?
어떤 아이디어를 준 accepts_nested_attributes_for child association validation failing 보았다?
나는이 문제를 accepts_nested_attributes_for를 사용하도록 변경하려고 시도했으며 같은 문제가 발생했습니다. validates_presence_of : project_id 호출에서 'project'는 nil을 반환합니다. –