app/models/concerns/inflectionable.rb in iqvoc_inflectionals-2.5.0 vs app/models/concerns/inflectionable.rb in iqvoc_inflectionals-2.8.0

- old
+ new

@@ -1,60 +1,52 @@ +# encoding: utf-8 module Inflectionable extend ActiveSupport::Concern included do attr_reader :inflectionals_attributes after_save :overwrite_inflectionals! after_save :create_default_inflectional has_many :inflectionals, - :class_name => "Inflectional::Base", - :foreign_key => "label_id", - :dependent => :destroy + :class_name => "Inflectional::Base", + :foreign_key => "label_id", + :dependent => :destroy end def endings Inflectional::Base.for_language_and_code(language, inflectional_code) end + def candidates + Inflectional::Base.candidates_for(base_form, language, inflectional_code) + end + def generate_inflectionals! return send(Inflectional::Base.name.to_relation_name) if base_form.blank? - converted_literal_form = Iqvoc::Origin.new(value).to_s - - diff = Iqvoc::Origin.new(converted_literal_form).sanitize_base_form.to_s.size - base_form.size - - unless base_form.blank? - new_base_form = converted_literal_form[0..(base_form.length-1)] + candidates.each do |candidate| + if candidate && inflectionals.where(value: candidate).none? + send(Inflectional::Base.name.to_relation_name).create!(value: candidate) + end end - Rails.logger.debug "converted_literal_form => #{converted_literal_form} (#{converted_literal_form.size}) | - base_form => #{base_form} (#{base_form.size}) | - new_base_form => #{new_base_form} | - value => #{value} (#{value.size}) | - diff => #{diff}" + # self.base_form = new_base_form + save(validate: false) - endings.each do |ending| - value = ending == "." ? new_base_form : (new_base_form + ending.downcase) - send(Inflectional::Base.name.to_relation_name).create!(:value => value) - end - - self.base_form = new_base_form - save(:validate => false) - inflectionals end def inflectionals_attributes=(str) - @inflectionals_attributes = str.split("\r\n") + @inflectionals_attributes = str.split("\r\n").uniq end def overwrite_inflectionals! return unless inflectionals_attributes transaction do inflectionals.delete_all inflectionals_attributes.each do |value| - inflectionals.create!(:value => value) + inflectionals.create!(value: value) end end end def create_default_inflectional