Pomóżcie przenieść “before_destroy :set_ord” do modułu. Za chudy w cyckach jeszcze jestem.
[code=ruby]module OrderedModel
def up
self.class.update_all ‘ord = ord + 1’, “ord = #{self.ord-1}”
update_attribute :ord, self.ord-1
end
def down
self.class.update_all ‘ord = ord - 1’, “ord = #{self.ord+1}”
update_attribute :ord, self.ord+1
end
def set_ord
self.class.update_all ‘ord = ord - 1’, “ord > #{self.ord}”
end
end
class Gallery < ActiveRecord::Base
include OrderedModel
has_many :photos
before_destroy :set_ord
end[/code]
[code]module OrderedModel
module InstanceMethods
def set_ord
self.class.update_all ‘ord = ord - 1’, “ord > #{self.ord}”
end
end
def self.included(base)
base.send :include, InstanceMethods
base.before_destroy :set_ord
end
end
class Gallery < ActiveRecord::Base
include OrderedModel
has_many :photos
end[/code]
Kunsztownie, dzięki Paweł!
Jeśli używasz railsów 3, to możesz też skorzystać z http://apidock.com/rails/ActiveSupport/Concern
[code=‘ruby’]module OrderedModel
extend ActiveSupport::Concern
module InstanceMethods
def set_ord
self.class.update_all ‘ord = ord - 1’, “ord > #{self.ord}”
end
end
included do
before_destroy :set_ord
end
end
class Gallery < ActiveRecord::Base
include OrderedModel
has_many :photos
end[/code]
No właśnie używam. Skorzystam bo czytelniejsze i z automatu wciąga metody instancji/klasy. DZIĘKI!