X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fspeech_balloon.rb;h=367af4ad552594b64ccf75037a35563bb7d32ee1;hb=9edc3731389bcae0de05ef6045cceb6b7581cc8f;hp=0289e591f2e1accf534a565f7ce3622fb892530b;hpb=056e3cc7f97bb88162dc5768f4d004578bee574f;p=pettanr%2Fpettanr.git diff --git a/app/models/speech_balloon.rb b/app/models/speech_balloon.rb index 0289e591..367af4ad 100644 --- a/app/models/speech_balloon.rb +++ b/app/models/speech_balloon.rb @@ -5,8 +5,8 @@ class SpeechBalloon < Peta::Element belongs_to :speech_balloon_template belongs_to :panel - accepts_nested_attributes_for :balloon - accepts_nested_attributes_for :speech + accepts_nested_attributes_for :balloon, :allow_destroy => true + accepts_nested_attributes_for :speech, :allow_destroy => true validates :panel_id, :numericality => {:allow_blank => true} validates :speech_balloon_template_id, :presence => true, :numericality => true, :existence => {:both => false} @@ -15,6 +15,34 @@ class SpeechBalloon < Peta::Element validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} validates :speech_balloon_template_settings, :boost => {:boost_name => :speech_balloon_template} + scope :with_panel, -> do + includes(:panel) + end + + scope :with_speech_balloon_template, -> do + includes(:speech_balloon_template) + end + + scope :find_index, -> do + with_panel.where(Panel.arel_table[:publish].gt 0).references(:panel) + end + + scope :find_private, -> (operators) do + with_panel.where(Panel.arel_table[:author_id].eq operators.author.id).references(:panel) + end + + scope :find_by_panel, -> (panel_id) do + find_index.where(panel_id: panel_id).references(:panel) + end + + scope :find_by_speech_balloon_template, -> (speech_balloon_template_id) do + find_index.where(speech_balloon_template_id: speech_balloon_template_id).references(:panel) + end + + scope :find_by_author, -> (author_id) do + find_index.where(Panel.arel_table[:author_id].eq author_id).references(:panel) + end + def self.by_author_list_includes { :panel => {