私はRails Admin gemを使用しています。新しいアクティビティー・タイプを追加して、同じ名前でもう一度作成すると、そのアクティビティー・タイプがすでに使用されていることが検証されます。しかし、編集しようとするたびに「名前は空白にできません」Rails管理でbefore_validationが使用されていると、フィールドは空白になります
たとえば、私が作成した「Swimming/SWIMMING」などの新しいアクティビティタイプを追加しようとしました。これを回避するbefore_validation
コールバックを使用して最初の文字を大文字にしてから、一意性を確認してname
にしてください。
はい、動作していますが、name
フィールドを編集しようとすると、投稿後に空白になります。
注:また、を使わないで、before_validation
を使用しようとしましたが、機能しませんでした。
アクティビティタイプ
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