Rails Admin gem을 사용하고 있습니다. 새 활동 유형을 추가하고 동일한 이름으로 다시 작성하면 해당 이름이 이미 사용되었는지 확인합니다. 하지만 하나를 편집하려고 할 때마다 "이름을 비워 둘 수 없습니다."Rails Admin에서 before_validation을 사용할 때 필드가 비게됩니다.
예를 들어 수영을 만들었고 수영/수영 등 새로운 활동 유형을 추가하려고했습니다. 이것을 피하십시오. before_validation
콜백을 사용하여 첫 번째 문자를 대문자로 만들고 name
의 고유성을 확인하십시오.
예, 작동하지만 제출할 때마다 name
입력란을 편집하려고하면 입력란이 비워집니다.
참고 : 또한 없이 사용하려고 시도했지만 작동하지 않았습니다.
활동 유형
class ActivityType < ApplicationRecord
before_destroy :ensure_has_no_activity_type
before_validation :capitalize_first_letter_name
has_many :activities
validates :name, presence: true,:uniqueness => {:case_sensitive => true}, length: { maximum: 20 },format: Utilities::RegexValidations.alphanumeric_underscore
validates :description, presence: false
private
def ensure_has_no_activity_type
if activities.present?
errors.add(:base, 'Cannot delete activity type that has activity')
throw(:abort)
end
end
def capitalize_first_letter_name
# Capitalize the first letter and the rest will be small letter
self.name = self.name.capitalize!
end
end
질문 : 내가 편집 및 제출하려고 시도 할 때마다 왜 이름 필드는 비어 되는가? 이것에 대한 이유는 무엇입니까?
나는 그것을 읽었습니다. 첫 글자를 대문자로 만들고 나머지는 작은 글자로 만들 것입니다. 나는 대문자를 사용했다. 왜냐하면 나는 주어진 상황을 막고 싶기 때문이다. – Angel
이 문제를 막기 위해 무엇을해야 하는가? – Angel
'capitalize!'를'capitalize'로 바꾸어보세요. – yzalavin