1 class Panel < ActiveRecord::Base
3 has_many :panel_pictures, :dependent => :destroy
4 has_many :balloons, :dependent => :destroy
5 accepts_nested_attributes_for :panel_pictures, :allow_destroy => true
6 accepts_nested_attributes_for :balloons, :allow_destroy => true
8 def self.max_seq comic_id
9 Panel.maximum(:seqno, :conditions => ['comic_id = ?', comic_id]).to_i
12 def self.find_seq comic_id, seqno
13 Panel.find(:first, :conditions => ['comic_id = ? and seqno = ?', comic_id, seqno])
16 #更新する時にPanelIDをチェックしとかないと勝手に所属先を変えられるゾ!?
20 max_seq = Panel.max_seq self.comic_id
21 f = Panel.find_seq(self.comic_id, self.seqno) if self.seqno
23 Panel.update_all('seqno = seqno + 1', ['comic_id = ? and seqno >= ?', self.comic_id, self.seqno])
25 self.seqno = max_seq + 1
31 return true if self.seqno == new_seq
32 if self.seqno > new_seq
33 Panel.update_all('seqno = seqno + 1', ['comic_id = ? and (seqno >= ? and seqno < ?)', self.comic_id, new_seq, self.seqno])
35 nf = Panel.find_seq(self.comic_id, new_seq)
36 max_seq = Panel.max_seq self.comic_id
37 new_seq = max_seq if new_seq > max_seq
38 Panel.update_all('seqno = seqno - 1', ['comic_id = ? and (seqno > ? and seqno <= ?)', self.comic_id, self.seqno, new_seq])
44 def destroy_and_shorten
45 Panel.update_all('seqno = seqno - 1', ['comic_id = ? and (seqno > ?)', self.comic_id, self.seqno])
50 return false unless author
51 self.author_id == author.id