2017-05-03 5 views
0

Active Admin 양식을 사용하면 빈 문자열 값이 NULL 값 대신 ""(비어 있음)으로 저장됩니다.ActiveRecord + ActiveAdmin, null 대신 빈 문자열을 저장합니다.

MySQL에서 모든 빈 값을 NULL로 저장하려면 초기화 프로그램에서 설정해야하는 매개 변수가 있습니까?

form do |f| 
    input :label 
    input :description, as: :text 
    input :country 
    input :city 
    end 
    actions 
end 

이 내 마이그레이션 스키마입니다 :

create_table "projects" do |t| 
    t.string "label", limit: "40" 
    t.string "country", limit: "2" 
    t.string "city", limit: "200" 
    t.string "description", limit: 600 
end 

그리고 이것은 내 Gemfile입니다.

gem 'rails', '~> 5.1.0.rc1' 
gem 'mysql2', '>= 0.3.18', '< 0.5' 
gem 'puma', '~> 3.0' 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'turbolinks', '~> 5' 
gem 'jbuilder', '~> 2.5' 
gem 'active_model_serializers', '~> 0.10.5', require: true 
gem 'kaminari' 
gem 'inherited_resources', '~> 1.7' 
gem 'activeadmin', '~> 1.0.0.pre5' 
gem 'sidekiq', '~> 4.2.10' 
gem "paperclip", "~> 5.1.0" 
gem 'aws-sdk', '~> 2.3.0' 
+0

이로 인해 겪고있는 문제점은 무엇입니까? –

+0

이 형식은 MySQL 테이블에 NULL 대신 빈 값을 ""으로 저장합니다. – Cornelius

답변

0

폼의 기본 동작 인 것 같습니다. 나는 당신의 문제를 해결할 것 입니다이 보석 nilify_blanks 건너 왔어요. 도움이 되길 바랍니다.

+0

보석을 보았지만 빌드 깃발에 오류 상태가 있습니다. 그리고 제가 생각했던 것입니다 – Cornelius

+0

나는 그것도 보았습니다,하지만 당신은 시험해 볼 수 있습니다. 만약 당신이 그것을 마른 상태로 유지하는 모든 모델을 원한다면 시도해 볼 가치가있는, ur 코드를 깨뜨릴 수 있습니다. 그리고 만약 당신이 http://stackoverflow.com/a/40387633/6548745를 보지 않는다면이 솔루션을 건너 온 것 같아요. 제한된 속성에 좋습니다. –

+0

그래서 어느 것이 당신을 위해 일 했나요? 보석이나 SO 링크에서 코드? @Cornelius –

0

이것은 ActiveAdmin 문제가 아니라 레일스입니다.

가능한 경우 don't use null for empty strings. 널 (null)를 사용하여 이론적으로 정확한있을 수 있지만, 모든 VARCHAR 컬럼이 null이 아닌 설정되어있는 경우 실제로 내가 예를 들어, 간단하고 적은 오류가 발생하기 쉬운 MySQL의 작업을 발견 한 :

t.string :label, limit: 40, null: false 

nilify_blanks 보석 대신 레일 4. 이후 전혀 관리가되지 않고있다, 귀하의 모델에서 다음을 시도하십시오.

def label=(label) 
    write_attribute :label, label.present? ? label : nil 
end