OSDN Git Service

merge
[pettanr/pettanr.git] / app / models / license_group.rb
1 #ライセンスグループ
2 class LicenseGroup < Peta::Template
3   load_manifest
4   has_many :resource_pictures
5   has_many :licenses
6   
7   validates :name, :presence => true, :length => {:maximum => 50}, :uniqueness => true
8   validates :module_name, :presence => true, :length => {:maximum => 50}
9   validates :caption, :presence => true, :length => {:maximum => 30}
10   validates :url, :presence => true, :length => {:maximum => 200}, :url => {:message => I18n.t('errors.messages.url')}
11   
12   scope :find_index, -> do
13     self.all
14   end
15   
16   def supply_default
17   end
18   
19   def overwrite
20   end
21   
22   def self.show_opt
23     {:include => {:licenses => {}}}
24   end
25   
26   def self.store name, attr
27     #ライセンスデータがあるとライセンスグループのデータ生成で邪魔するので移しておく
28     lattr = attr["licenses_attributes"]
29     attr.delete "licenses_attributes"
30     #ライセンスグループを先に保存してidを決める
31     r = LicenseGroup.modify_object name, attr
32     r.save
33     #取っておいたライセンスデータとidでライセンス作成
34     if (c = License.stores(lattr, r.id)) > 0
35       r.errors.add :base, License.model_name.human + I18n.t('errors.not_create')
36     end
37     r
38   end
39   
40   # destroy with licenses
41   def destroy
42     res = false
43     self.class.transaction do
44       self.licenses.each do |license|
45         raise ActiveRecord::Rollback unless license.destroy
46       end
47       res = super
48       raise ActiveRecord::Rollback unless res
49     end
50     res
51   end
52   
53   def self.import filename
54     LicenseGroup.import_file(filename) {|name, attr| LicenseGroup.store(name, attr)}
55   end
56   
57   def self.disp_import_error r
58     if r == false
59       puts "json file error. file does not exist or broken"
60     else
61       unless r.empty?
62         r.each do |lg|
63           put lg.errors.full_messages
64         end
65       end
66     end
67   end
68 end