Ruby on rails t在这个问题上扮演了一个角色。所以你的项目中没有couter\u缓存?那么,它看起来肯定像框架中的bug。 294# def destroy 295# 296# messages = {} 297# 298# # Create the @pro
Ruby on rails t在这个问题上扮演了一个角色。所以你的项目中没有couter\u缓存?那么,它看起来肯定像框架中的bug。 294# def destroy 295# 296# messages = {} 297# 298# # Create the @pro,ruby-on-rails,ruby,activerecord,ruby-on-rails-3.2,rails-activerecord,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 3.2,Rails Activerecord,t在这个问题上扮演了一个角色。所以你的项目中没有couter\u缓存?那么,它看起来肯定像框架中的bug。 294# def destroy 295# 296# messages = {} 297# 298# # Create the @proj_clef_repartition objet 299# unless creer_instance_objet_et_render_parent_si_impossible(ProjClefRepartition, params[:i
t在这个问题上扮演了一个角色。所以你的项目中没有
couter\u缓存
?那么,它看起来肯定像框架中的bug。
294# def destroy
295#
296# messages = {}
297#
298# # Create the @proj_clef_repartition objet
299# unless creer_instance_objet_et_render_parent_si_impossible(ProjClefRepartition, params[:id], params[:proj_sous_projet_id], [{:proj_sous_projet => [:proj_charges, {:proj_projet => {:proj_mesure => :proj_paquet_mesures}}]}]) then
300#
301# enregistrement_ok = false
302#
303# @objet_de_l_erreur = @proj_clef_repartition
304# @proj_sous_projet = @proj_clef_repartition.proj_sous_projet
305# @proj_projet = @proj_sous_projet.proj_projet
306# @proj_mesure = @proj_projet.proj_mesure
307# @proj_paquet_mesures = @proj_mesure.proj_paquet_mesures
308# @hist_version_sous_projet = HistVersionSousProjet.where(:proj_sous_projet_id => @proj_sous_projet.id).order{version.desc}.limit(1)[0]
309#
310# @proj_clefs_repartition = @proj_sous_projet.proj_clefs_repartition
311# @proj_charges = @proj_sous_projet.proj_charges
312# @total_charges = BigDecimal.new('0', 18)
313#
314# # =================== DEBUT DE LA TRANSACTION ===================
315# ProjClefRepartition.transaction do
316#
317#
318# if sauver_version(@proj_clef_repartition, messages, nil, 3, nil, true) then
319#
320# logger.debug "#{@proj_clef_repartition.blank?}"
321# logger.debug "#{@proj_clef_repartition.class} (#{@proj_clef_repartition.id})"
322# if @proj_clef_repartition.destroy then
323# ajouter_message(t('activerecord.successful.messages.deleted', :model => ProjClefRepartition.model_name.human), :success, messages)
324# enregistrement_ok = true
325# else
326# ajouter_message(t('activerecord.warning.messages.deleted', :model => ProjClefRepartition.model_name.human), :alert, messages)
327# end # proj_clef_repartition.destroy
328#
329# end # sauver_version(@proj_clef_repartition, messages, nil, 3, nil, true)
330#
331#
332# raise ActiveRecord::Rollback unless enregistrement_ok
333#
334# end # ProjClefRepartition.transaction
335# # =================== FIN DE LA TRANSACTION ===================
336#
337#
338# afficher_maintenant(messages)
339#
340# render 'projects/proj_sous_projets/show'
341#
342# end # creer_instance_objet_et_render_parent_si_impossible(ProjClefRepartition, params[:id], params[:proj_sous_projet_id])
343#
344#
345# rescue ActiveRecord::StatementInvalid => exception
346#
347#
348#
349#
350#
351# @hist_sous_projet = @hist_version_sous_projet.hist_sous_projet
352# ajouter_message(t('activerecord.warning.messages.invalid_db_statement'), :error, messages)
353# ajouter_erreur_concernant_exception_statement_invalid(exception, @objet_de_l_erreur)
354# afficher_maintenant(messages)
355# render 'projects/proj_sous_projets/show'
356#
357#
358# rescue ActiveRecord::DeleteRestrictionError => exception
359#
360#
361# @hist_sous_projet = @hist_version_sous_projet.hist_sous_projet
362#
363# ajouter_message(t('activerecord.warning.messages.delete_restriction', :model => ProjClefRepartition.model_name.human), :error, messages)
364# afficher_maintenant(messages)
365# render 'projects/proj_sous_projets/show'
366#
367# end # destroy
has_many :proj_contributions, :dependent => :restrict
has_many :proj_charges, :dependent => :restrict
require Rails.root.to_s + '/lib/opf_modules/opf_outils_models.rb'
class ProjClefRepartition < ActiveRecord::Base
include OutilsModels
# Renforcement de la sécurité avec declarative_authorization Gem
using_access_control
# Modifier les attributs contenant des string vides en des nil
before_validation :blank_string_attributes_to_nil
attr_accessible :code, :designation, :proj_sous_projet_id, :motivation, :pub_modification_id
validates :code, :designation, :proj_sous_projet_id, :pub_modification_id, :admin_utilisateur_id, :presence => true
attr_accessor :montant_contributions_total
validates :code, :length => { :in => 2..19 }, :uniqueness => { :case_sensitive => false }
validates :designation, :length => { :in => 2..60 }
validates :motivation, :length => { :in => 5..600 }, :allow_blank => true
validate :clef_repartition_exclusive_a_un_unique_sous_projet
belongs_to :proj_sous_projet
belongs_to :pub_modification
belongs_to :admin_utilisateur
has_many :proj_contributions, :dependent => :restrict
has_many :proj_charges, :dependent => :restrict
has_many :hist_versions_clefs_repartition, :class_name => HistVersionClefRepartition
# Méthode utilisée par la collection_select box
def texte_pour_collection_select
# Groupé les attributs afin d'améliorer la compréhension de l'utilisateur lors du choix par la select box
self.code + ' - ' + self.designation
end
# -------------------------------------------------------------
# Validations speciale
# -------------------------------------------------------------
private
def clef_repartition_exclusive_a_un_unique_sous_projet
# Lors de la création d'une nouvelle clé de répartition, l'ID est nil, et il n'y a aucun risque que la clef soit déjà utilisée par une charge
unless id.nil? then
# Trouver toutes les charges utilisant cette clé de répartition
proj_charges = ProjCharge.where(:proj_clef_repartition_id => id)
proj_charges.each do |c|
if c.proj_sous_projet_id != proj_sous_projet_id then
errors.add(:proj_sous_projet_id, I18n.t('activemodel.warning.messages.reaffectation_impossible', :modele_enfant => I18n.t('projects.proj_charges.model'), :modele_parent => I18n.t('projects.proj_sous_projets.model'), :modele => I18n.t('projects.proj_clefs_repartition.model')))
break
end # c.proj_sous_projet_id != proj_sous_projet_id
end # proj_charges.each
end # id.nil?
end # clef_repartition_exclusive_a_un_unique_sous_projet
end
belongs_to :proj_clef_repartition