OSDN Git Service

rake annotate_models
[mint/mint-server.git] / app / models / square_root_arithmetic_edit_form.rb
1 # == Schema Information
2 # Schema version: 20100224042103
3 #
4 # Table name: active_forms
5 #
6 #  unit_id         :
7 #  level           :integer
8 #  amount          :integer
9 #  lock_version    :integer
10 #  operators_plus  :boolean
11 #  operators_minus :boolean
12 #  term_number     :integer
13 #  min             :integer
14 #  max             :integer
15 #  single_term_min :integer
16 #  single_term_max :integer
17 #  use_coefficient :boolean
18 #  use_power       :boolean
19 #
20
21 class SquareRootArithmeticEditForm < ActiveForm
22   acts_as_problem :operators => %w[plus minus], :term_number => true
23
24   column :min, :type => :integer
25   column :max, :type => :integer
26   column :single_term_min, :type => :integer
27   column :single_term_max, :type => :integer
28   column :use_coefficient, :type => :boolean
29   column :use_power, :type => :boolean
30
31   validates_presence_of :min
32   validates_presence_of :max
33   validates_presence_of :single_term_min
34   validates_presence_of :single_term_max
35
36   with_options :only_integer => true, :allow_blank => true do |problem|
37     problem.validates_numericality_of :min, :greater_than_or_equal_to => 1
38     problem.validates_numericality_of :max, :greater_than_or_equal_to => 1
39     problem.validates_numericality_of :single_term_min, :greater_than_or_equal_to => 1
40     problem.validates_numericality_of :single_term_max, :greater_than_or_equal_to => 1
41   end
42
43   def options_hash
44     {
45       :min             => min,
46       :max             => max,
47       :single_term_min => single_term_min,
48       :single_term_max => single_term_max,
49       :term_number     => term_number,
50       :operators       => operators,
51       :use_coefficient => use_coefficient,
52       :use_power       => use_power,
53     }
54   end
55
56   def set_options(options)
57     hash = ActiveSupport::JSON.decode(options)
58     self.min             = hash["min"]
59     self.max             = hash["max"]
60     self.single_term_min = hash["single_term_min"]
61     self.single_term_max = hash["single_term_max"]
62     self.term_number     = hash["term_number"] if hash["term_number"]
63     self.operators       = hash["operators"] if hash["operators"]
64   end
65
66   def validate
67     check_min_max(:min, :max)
68     check_min_max(:single_term_min, :single_term_max)
69     check_operators()
70   end
71 end