각 게시물의 위치가 많은 중첩 된 양식이 있습니다. 문제는 사용자가 위치를 만든 다음 비워두면 내 테이블에 빈 데이터가 채워지는 것입니다. : 중첩 된 속성에 대해 reject_if 공백이 있습니다.
나는이 내post.rb
모델에서 그것을 할 것이라고 생각 :
accepts_nested_attributes_for :locations, :allow_destroy => true, :reject_if => proc { |attributes| attributes['name'].blank? }
그러나 그들은 여전히 통해 미끄러하고 빈 때 저장된다. 왜 그런가?
편집 : 여기에 의견 요청에 따라 해시 : 당신은 당신의 위치 모델에 대한 코드를 보여주지 않았다
Parameters: {"utf8"=>"✓","authenticity_token"=>"r74iCzC4tJgVI6FiCEH7XzfiTmaqKihF5JSs7Ow3MSI=", "post"=>{"title"=>"This is a test blog post fo
r stack overflow", "body"=>"This is a test blog post for stack overflow", "tag_list"=>"", "locations_attributes"=>{"0"=>{"name"=>"London", "long
itude"=>"-0.1276831", "latitude"=>"51.5073346"}, "1354382846976"=>{"name"=>"Paris", "longitude"=>"2.3522219", "latitude"=>"48.856614"}, "1354382
849464"=>{"name"=>"", "longitude"=>"", "latitude"=>""}, "1354382850624"=>{"name"=>"", "longitude"=>"", "latitude"=>""}}}, "_wysihtml5_mode"=>"1"
, "name"=>"", "legname"=>"Paris", "longitude"=>"2.3522219", "latitude"=>"48.856614", "commit"=>"Submit"}
게시를 만들 때 사용하는 params 해시를 게시 할 수 있습니까? 내 추측으로는 처음부터 기형이 맞았다는 것입니다. accepts_nested_attributes를 사용하면 게시물을 저장하고 유효성 검사를 실행할 때마다 연관을 자동으로 저장한다는 것을 알고 계셨습니까? 참조 : http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html –
고마워요! 네, 속성을 변경하여 고유성을 검사 할 수 있도록 작성 함수에서 꽤 펑키 한 작업을하고 있기 때문에 그럴 것 같아요. 나는 그것들이 그때 드로잉 보드로 돌아간 것 같아요. 나는 해시를 게시했습니다. 당신에게 어떤 일이 생길 경우에 대비해서! –
location_attributes가 이상합니다. 해시가 아니어야하며 해시 배열이어야합니다 (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html 참조). 이것이 문제를 일으키는 지 모르겠다. –