기존 Rails 모델 인 Spree :: Variant에 friendly_id 슬러그를 추가하려고합니다. Variant belongs_to Product, 이미 잘 작동하는 고유 한 슬러그가 있습니다 (Spree와이 모델은 제 3 자 보석에서 제공됨).friendly_id 슬러그가 생성되지 않고 호출되는 메서드
변형을 저장할 때 슬러그가 생성되어 데이터베이스의 slug
필드에 저장 될 것으로 예상되지만 필드는 NULL로 유지됩니다.
Spree::Variant.class_eval do
extend FriendlyId
friendly_id :slug_candidates, :use => :slugged
validates :slug, length: { minimum: 3 }, allow_blank: true, uniqueness: true
self.whitelisted_ransackable_attributes = %w[weight sku slug]
def parent_slug
self.product.slug
end
def option_value_list
if !self.option_values.nil? && self.option_values.length > 0
opts = self.option_values.collect{ |v|
v.presentation }.join('-')
return opts
else
return ''
end
end
def slug_candidates
[
[:parent_slug, :option_value_list],
[:parent_slug, :option_value_list, :sku]
]
end
def should_generate_new_friendly_id?
puts "Is new #{new_record?}, is blank #{slug.blank?}" #Is new false, is blank true when updating test record
new_record? || slug.blank?
end
end
비슷한 질문이 올바르게 정의되어 있는지 should_generate_new_friendly_id?
을 만들기로 응답합니다, 여기에 나타납니다
여기 내 모델 코드입니다. 나는 그것이 레코드를 업데이트 할 때 호출되고 True를 반환한다는 것을 확인했지만 레코드는 여전히 슬러그로 끝나지 않습니다.
또한 option_value_list
이 호출되고 원하는 정보를 출력했음을 확인했습니다. 내 애플 리케이션에서 예제 반환 값은 "티타늄"입니다.
내 슬러그가 생성되지 않는 이유는 무엇입니까? 문제를 더욱 좁힐 수있는 곳은 어디입니까?