Ich versuche, eine Friendly_id Slug zu einem vorhandenen Rails-Modell, Spree :: Variant hinzufügen. Variante gehört zu Produkt, das bereits seine eigenen Slugs hat, die gut funktionieren (Spree und diese Modelle stammen von einem Edelstein der dritten Partei).friendly_id Slug nicht generieren, aber Methoden aufgerufen
Wenn ich versuche, eine Variante zu speichern, erwarte ich, dass ein Slug generiert und im Feld slug
in der Datenbank gespeichert wird, aber das Feld bleibt NULL.
Hier ist mein Modellcode:
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
ähnliche Fragen beantwortet werden mit sicher should_generate_new_friendly_id?
machen richtig definiert ist, die es hier zu sein scheint. Ich habe überprüft, dass es aufgerufen wird, und True zurückgegeben, wenn ich einen Datensatz aktualisiere, aber der Datensatz immer noch nicht mit einem Slug endet.
Ich habe auch überprüft, dass option_value_list
aufgerufen wird, und gibt die gewünschten Informationen aus. Ein Beispiel Rückgabewert von meiner App ist "Titanium".
Warum ist meine Schnecke nicht erstellt? Wo kann ich das Problem weiter einschränken?