ezframe 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ee9abffabef18607104a790bf9c044fd18022c1bb9c325d0b49c3919504da0e
4
- data.tar.gz: 7c624b8735e2d081a73c8c5b771abdb3ca0a531a66d1e80ac953c4063dd237ba
3
+ metadata.gz: 5ab67d7d24a058acd24e2df411c31371b3470d5f448950b226bb6a0073690625
4
+ data.tar.gz: 9a244d5b2c0265c38cdff614b086a56d29ef0570cc4eb4ae38136d1d34709a76
5
5
  SHA512:
6
- metadata.gz: abf17a71fad66bdb9776346a155913664b78ebc9dfe4bc2fc94526340238423c7adf593650ed82e5e15ae052ecaa25e38a3a3803a68efa831d5cdf3d46478951
7
- data.tar.gz: 4235b2a4e945845797e3cb41f27b675775598b8996952087701ca5ce678ef08abb28b44fb5f9b475a6281e16dd9845d77522824486b23f818ef773ea617e77ef
6
+ metadata.gz: 0544756cb9b1ff1db515424425bbe2cc0682f6671c51e5e14d4dc1464bdb73f486d5b5cafc471d2e1da8e1a12a19178c8728fb6f6bc3d5ceceaa58c1fd445b9c
7
+ data.tar.gz: b823cb688787f08e492bc9b2fc2f517bef2e417d64c099f041a4174042ee39e2e5bb6fbb52a0978f9e79a95ef30c9e09eb4780407434f576cb3b06c4b27427cb
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://www.rubygems.org"
2
+ gemspec
@@ -47,7 +47,7 @@ Dir["column/*.yml"].each do |file|
47
47
  if dup && dup.length > 0
48
48
  puts "#{file}\n#{dup}"
49
49
  end
50
- yaml = YAML.load_file(file)
50
+ yaml = YAML.load(File.open(file), symbolize_names: true)
51
51
  upper = Object.const_get("Ezframe")
52
52
  yaml.each do |column|
53
53
  type = column["type"]
@@ -3,108 +3,129 @@
3
3
  require "ezframe"
4
4
  include Ezframe
5
5
 
6
- class DBInfo
7
- class << self
8
- def get_db_info(table_name)
9
- typ = get_database_type(Config[:database])
10
- case typ
11
- when "postgresql"
12
- return get_info_from_postgres(table_name)
13
- when "sqlite"
14
- return get_info_from_sqlite(table_name)
15
- else
16
- raise "unknown database"
6
+ module Ezframe
7
+ module Model
8
+ class DBInfo
9
+ def initialize
10
+ @db_columns = {}
11
+ @db_typ = get_database_type(Config[:database])
12
+ case @db_typ
13
+ when "postgresql"
14
+ get_info_from_postgres
15
+ when "sqlite"
16
+ get_info_from_sqlite
17
+ else
18
+ raise "unknown database system"
19
+ end
17
20
  end
18
- return nil
19
- end
20
21
 
21
- def get_info_from_postgres(table_name)
22
- dbcol = {}
23
- sql = "SELECT column_name,data_type FROM information_schema.columns WHERE table_name = '#{table_name}'"
24
- begin
25
- data_a = DB.sequel[sql].all
26
- rescue
27
- return nil
22
+ def get_db_info(table_name)
23
+ return @db_columns[table_name.to_sym]
28
24
  end
29
- # puts data_a
30
- data_a.each do |row|
31
- dbcol[row[:column_name].to_s.to_sym] = normalize_dbtype(row[:data_type])
25
+
26
+ def get_info_from_postgres
27
+ sql = "SELECT * FROM information_schema.columns"
28
+ begin
29
+ data_a = DB.sequel[sql].all
30
+ rescue => e
31
+ EzLog.error("get_info_from_postgres: #{e}")
32
+ return nil
33
+ end
34
+ data_a.each do |row|
35
+ table_name, col_name = row[:table_name], row[:column_name]
36
+ next if col_name.nil? || table_name.nil?
37
+ next unless ColumnSets.refer(table_name)
38
+ @db_columns[table_name.to_sym] ||= {}
39
+ @db_columns[table_name.to_sym][col_name.to_sym] = normalize_dbtype(row[:data_type])
40
+ end
32
41
  end
33
- return dbcol
34
- end
35
42
 
36
- def get_info_from_sqlite(table_name)
37
- sql = "SELECT * from sqlite_master WHERE name = '#{table_name}';"
38
- data = DB.sequel[sql].first
39
- return nil unless data
40
- sql = data[:sql]
41
- return parse_create_sql(sql)
42
- end
43
+ def get_info_from_sqlite
44
+ sql = "SELECT * from sqlite_master;"
45
+ data_a = DB.sequel[sql].all
46
+ return nil unless data_a
47
+ data_a.each do |data|
48
+ sql = data[:sql]
49
+ parse_create_sql(sql)
50
+ end
51
+ end
43
52
 
44
- def parse_create_sql(sql)
45
- sql.gsub(/CREATE TABLE \`\w+\` \(/, "")
46
- column_a = sql.split(", ")
47
- dbcol = {}
48
- column_a.each do |line|
49
- if line =~ /\`(\w+)\`\s(\w+)/
50
- colkey, dbtype = $1, $2
51
- dbcol[colkey.to_sym] = dbtype
53
+ def parse_create_sql(sql)
54
+ sql.gsub(/CREATE TABLE \`(\w+)\` \(/i, "")
55
+ table_name = $1
56
+ @db_columns[table_name.to_sym] ||= {}
57
+ column_a = sql.split(", ")
58
+ column_a.each do |line|
59
+ if line =~ /\`(\w+)\`\s(\w+)/
60
+ colkey, dbtype = $1, $2
61
+ @db_columns[table_name.to_sym][colkey.to_sym] = dbtype
62
+ end
52
63
  end
53
64
  end
54
- return dbcol
55
- end
56
65
 
57
- def get_database_type(config)
58
- return config.split("://")[0]
59
- end
60
- end
61
- end
66
+ def get_database_type(config)
67
+ return config.split("://")[0]
68
+ end
62
69
 
63
- def exec_sql(sql)
64
- begin
65
- DB.sequel.run(sql)
66
- rescue => exception
67
- p exception
68
- end
69
- end
70
+ def exec_sql(sql)
71
+ begin
72
+ DB.sequel.run(sql)
73
+ rescue => e
74
+ EzLog.error("dbmigrate: exec_sql: #{e}")
75
+ end
76
+ end
70
77
 
71
- def normalize_dbtype(dbtype)
72
- return nil unless dbtype
73
- return "int" if dbtype == "integer"
74
- return "timestamp" if dbtype.index("timestamp")
75
- return dbtype
76
- end
78
+ def normalize_dbtype(dbtype)
79
+ return nil unless dbtype
80
+ return "int" if dbtype == "integer"
81
+ return "timestamp" if dbtype.index("timestamp")
82
+ return dbtype
83
+ end
77
84
 
78
- def set_default(column)
79
- default_value = column.attribute[:default]
80
- if default_value
81
- unless %w[int].include?(column.db_type)
82
- default_value = "'#{default_value}'"
83
- end
84
- exec_sql("ALTER TABLE #{column.parent.name} ALTER #{column.key} SET DEFAULT #{default_value}")
85
- end
86
- end
85
+ def set_default(column)
86
+ default_value = column.attribute[:default]
87
+ if default_value
88
+ unless %w[int].include?(column.db_type)
89
+ default_value = "'#{default_value}'"
90
+ end
91
+ exec_sql("ALTER TABLE #{column.parent.name} ALTER #{column.key} SET DEFAULT #{default_value}")
92
+ end
93
+ end
87
94
 
88
- def check_diff(column_set)
89
- table_name = column_set.name
90
- dbcols = DBInfo.get_db_info(table_name)
91
- unless dbcols
92
- ColumnSets.create_one_table(table_name, ColumnSets.get(table_name.to_sym))
93
- return
94
- end
95
- column_set.each do |column|
96
- next if %w[id updated_at created_at].include?(column.key.to_s)
97
- dbtype = dbcols[column.key]
98
- new_type = column.db_type
99
- unless dbtype
100
- exec_sql("ALTER TABLE #{table_name} ADD #{column.key} #{new_type};")
101
- set_default(column)
102
- next
103
- end
104
- if dbtype != new_type
105
- exec_sql("ALTER TABLE #{table_name} ALTER COLUMN #{column.key} DROP DEFAULT;")
106
- exec_sql("ALTER TABLE #{table_name} ALTER #{column.key} TYPE #{new_type};")
107
- set_default(column)
95
+ def check_diff(column_set)
96
+ table_name = column_set.name
97
+ dbcols = get_db_info(table_name)
98
+ unless dbcols
99
+ ColumnSets.create_one_table(table_name, ColumnSets.get(table_name.to_sym))
100
+ return
101
+ end
102
+ column_set.each do |column|
103
+ next if %w[id updated_at created_at deleted_at].include?(column.key.to_s)
104
+ dbtype = dbcols[column.key]
105
+ new_type = column.db_type
106
+ if !new_type || new_type.empty?
107
+ EzLog.error("check_diff: no db_type: table=#{table_name}:key=#{column.key}")
108
+ next
109
+ end
110
+ unless dbtype
111
+ exec_sql("ALTER TABLE #{table_name} ADD #{column.key} #{new_type};")
112
+ set_default(column)
113
+ next
114
+ end
115
+ if dbtype != new_type
116
+ exec_sql("ALTER TABLE #{table_name} ALTER COLUMN #{column.key} DROP DEFAULT;")
117
+ begin
118
+ exec_sql("ALTER TABLE #{table_name} ALTER #{column.key} TYPE #{new_type};")
119
+ rescue => e
120
+ EzLog.error("alter column type error: #{e.class}:#{e}:#{e.backtrace}")
121
+ back_key = "#{column.key}_bak"
122
+ exec_sql("ALTER TABLE #{table_name} RENAME #{column.key} TO #{back_key};")
123
+ end
124
+ set_default(column)
125
+ end
126
+ end
127
+ # exec_sql("ALTER TABLE #{table_name} add COLUMN deleted_at timestamp;")
128
+ end
108
129
  end
109
130
  end
110
131
  end
@@ -112,7 +133,8 @@ end
112
133
  Config.init
113
134
  DB.init
114
135
  ColumnSets.init
136
+ dbinfo = Model::DBInfo.new
115
137
 
116
138
  ColumnSets.each do |table_name, column_set|
117
- check_diff(column_set)
139
+ dbinfo.check_diff(column_set)
118
140
  end
@@ -5,10 +5,11 @@ require "sequel"
5
5
  require "json"
6
6
  require "nkf"
7
7
  require "date"
8
+ require "bcrypt"
8
9
 
9
10
  require_relative 'ezframe/version'
10
11
  require_relative 'ezframe/util'
11
- require_relative 'ezframe/logger'
12
+ require_relative 'ezframe/ezlog'
12
13
  require_relative 'ezframe/config'
13
14
  require_relative 'ezframe/controller'
14
15
  require_relative 'ezframe/japanese_utils'
@@ -19,6 +20,10 @@ require_relative 'ezframe/ht'
19
20
  require_relative 'ezframe/html'
20
21
  require_relative 'ezframe/materialize'
21
22
  require_relative 'ezframe/page_base'
23
+ require_relative 'ezframe/editor_common'
24
+ require_relative 'ezframe/main_editor'
25
+ require_relative 'ezframe/sub_editor'
26
+ require_relative 'ezframe/single_page_editor'
22
27
  require_relative 'ezframe/template'
23
28
  require_relative 'ezframe/server'
24
29
  require_relative 'ezframe/message'
@@ -5,26 +5,28 @@ module Ezframe
5
5
 
6
6
  def init
7
7
  Warden::Manager.serialize_into_session do |auth|
8
- # Logger.info "serialize_into: #{auth.inspect}"
8
+ # EzLog.info "serialize_into: #{auth.inspect}"
9
9
  auth.user[:id]
10
10
  end
11
11
  Warden::Manager.serialize_from_session do |account|
12
- # Logger.info "serialize_from: account = #{account}"
12
+ # EzLog.info "serialize_from: account = #{account}"
13
13
  inst = Auth.get(account)
14
- # Logger.info "inst = #{inst.inspect}"
14
+ # EzLog.info "inst = #{inst.inspect}"
15
15
  inst
16
16
  end
17
17
  Warden::Strategies.add(:mystrategy) do
18
18
  def valid?
19
- # Logger.info "valid?"
19
+ # EzLog.info "valid?"
20
20
  params["account"] || params["password"]
21
21
  end
22
22
 
23
23
  def authenticate!
24
- Logger.info "Auth.authenticate: #{params}"
24
+ EzLog.info "mystrategy.authenticate!: user=#{user}, params=#{params}"
25
25
  if Auth.authenticate(env, params["account"], params["password"])
26
+ EzLog.info "mystrategy.authenticate!: success: user=#{user}"
26
27
  success!(Auth.get(params["account"]))
27
28
  else
29
+ EzLog.info "mystrategy.authenticate!: failed: user=#{user}"
28
30
  fail!(Message[:login_failure])
29
31
  end
30
32
  end
@@ -36,26 +38,29 @@ module Ezframe
36
38
  end
37
39
 
38
40
  def authenticate(env, account, pass)
39
- Logger.debug("authenticate: #{env}")
41
+ return nil if !pass || pass.strip.empty?
42
+ EzLog.debug("Auth.self.authenticate: account=#{account}, pass=#{pass}")
40
43
  auth_conf = Config[:auth]
41
- @user = DB.dataset(auth_conf[:table]).where(auth_conf[:user].to_sym => account ).first
42
- if @user
43
- Logger.info "Auth: authenticate"
44
+ user_data = DB.dataset(auth_conf[:table]).where(auth_conf[:user].to_sym => account ).first
45
+ if user_data
46
+ EzLog.info "Auth: self.authenticate: has user: #{@user}"
44
47
  else
45
- Logger.info "authenticate: this user does not exist: #{account}"
48
+ EzLog.info "Auth.self.authenticate: this user does not exist: #{account}"
46
49
  return nil
47
50
  end
48
- # Logger.info "env=#{env.inspect}"
49
- env['rack.session'][:user] = @user[:id]
50
- password = @user[auth_conf[:password].to_sym]
51
- Logger.debug("@user=#{@user}")
52
- bcrypt = BCrypt::Password.new(password)
53
- @user.delete(:password)
54
-
55
- return nil if !pass || pass.strip.empty? || !password || password.strip.empty?
56
- # 生パスワード比較
57
- # !!(password == pass)
58
- return bcrypt == pass
51
+ db_pass = user_data[auth_conf[:password].to_sym]
52
+ user_data.delete(:password)
53
+ return nil if !db_pass || db_pass.strip.length < 8
54
+ bcrypt = BCrypt::Password.new(db_pass)
55
+ if bcrypt == pass
56
+ env['rack.session'][:user] = user_data[:id]
57
+ @user = user_data
58
+ EzLog.debug("Auth.self.authenticate: success: password match!")
59
+ return true
60
+ else
61
+ EzLog.debug("Auth.self.authenticate: failure: password mismatch")
62
+ end
63
+ return nil
59
64
  end
60
65
  end
61
66
 
@@ -71,11 +76,15 @@ module Ezframe
71
76
  @user = dataset.where(auth_conf[:user].to_sym => account).first
72
77
  end
73
78
  unless @user
74
- Logger.error "Auth.initialize: This user does not exist: #{account}"
79
+ EzLog.error "Auth.initialize: This user does not exist: #{account}"
75
80
  return
76
81
  end
77
82
  self.password = @user[auth_conf[:password].to_sym]
78
83
  @user.delete(:password)
79
84
  end
85
+
86
+ def inspect
87
+ "account=#{@account}, user=#{@user}, id=#{@id}"
88
+ end
80
89
  end
81
90
  end
@@ -19,12 +19,12 @@ module Ezframe
19
19
 
20
20
  def load_one_file(filename)
21
21
  colset_name = $1 if filename =~ /(\w+).ya?ml$/
22
- yaml = YAML.load_file(filename)
22
+ yaml = YAML.load(File.open(filename), symbolize_names: true)
23
23
  if yaml.length == 0
24
- Logger.error("[ERROR] columns file is empty: #{filename}")
24
+ EzLog.error("[ERROR] columns file is empty: #{filename}")
25
25
  return
26
26
  end
27
- column_info = yaml.recursively_symbolize_keys
27
+ column_info = yaml # .recursively_symbolize_keys
28
28
  # puts "load_one_file: filename=#{filename} column_info=#{column_info.inspect}"
29
29
  add(colset_name, column_info)
30
30
  end
@@ -59,13 +59,14 @@ module Ezframe
59
59
  end
60
60
 
61
61
  def each
62
- @colset_h.each { |k, v| yield(k, v) }
62
+ @colset_h.each {|k, v| yield(k, v) }
63
63
  end
64
64
 
65
65
  def inspect
66
- @colset_h.each do |name, colset|
67
- "[#{name}]:#{colset.inspect}"
68
- end
66
+ return @colset_h.map do |name, colset|
67
+ # "[#{name}]:#{colset.inspect}"
68
+ "[#{name}]:\n"
69
+ end.join
69
70
  end
70
71
 
71
72
  def create_tables
@@ -73,14 +74,14 @@ module Ezframe
73
74
  begin
74
75
  create_one_table(table_name, column_set)
75
76
  rescue => e
76
- Logger.error("create_tables: #{e.inspect}\n#{$@.inspect}")
77
+ EzLog.error("create_tables: #{e.inspect}\n#{$@.inspect}")
77
78
  end
78
79
  end
79
80
  end
80
81
 
81
82
  def create_one_table(table_name, column_set)
82
83
  col_h = column_set.get_hash(:db_type)
83
- Logger.info "create_one_table: col_h=#{col_h.inspect}"
84
+ EzLog.info "create_one_table: col_h=#{col_h.inspect}"
84
85
  DB.create_table(table_name, col_h)
85
86
  end
86
87
 
@@ -102,7 +103,7 @@ module Ezframe
102
103
  if @colset_h[key]
103
104
  foreign_table = key
104
105
  else
105
- Logger.error "There is no related table: #{key}"
106
+ EzLog.error "There is no related table: #{key}"
106
107
  next
107
108
  end
108
109
  end
@@ -166,13 +167,13 @@ module Ezframe
166
167
  elsif @default_table
167
168
  colset_key, col_key = @default_table, colset_key
168
169
  else
169
- Logger.error "ColumnSetCollection.get: illegal arguments: #{colset_key}, #{col_key}"
170
+ EzLog.error "ColumnSetCollection.get: illegal arguments: #{colset_key}, #{col_key}"
170
171
  return nil
171
172
  end
172
173
  end
173
174
  colset = @colset_h[colset_key.to_sym]
174
175
  return nil unless colset
175
- # Logger.debug("Collection.get: colset_key=#{colset_key}, col_key=#{col_key}, value=#{colset[col_key].value}")
176
+ # EzLog.debug("Collection.get: colset_key=#{colset_key}, col_key=#{col_key}, value=#{colset[col_key].value}")
176
177
  return colset[col_key]
177
178
  end
178
179
 
@@ -182,7 +183,7 @@ module Ezframe
182
183
  end
183
184
 
184
185
  class ColumnSet
185
- attr_accessor :name, :parent, :edit_keys, :view_keys
186
+ attr_accessor :name, :parent # , :edit_keys, :view_keys
186
187
 
187
188
  def initialize(parent: nil, name: nil, columns: nil)
188
189
  @parent = parent
@@ -201,6 +202,14 @@ module Ezframe
201
202
  @columns.keys
202
203
  end
203
204
 
205
+ def edit_keys
206
+ @columns.keys.select {|k| !@columns[k].no_edit? }
207
+ end
208
+
209
+ def view_keys
210
+ @columns.keys.select {|k| !@columns[k].no_view? }
211
+ end
212
+
204
213
  # 配列を初期化する
205
214
  def set(attr_a)
206
215
  @columns[:id] = IdType.new(key: "id", label: "ID", hidden: true)
@@ -217,6 +226,7 @@ module Ezframe
217
226
  end
218
227
  @columns[:created_at] = DatetimeType.new(type: "datetime", key: "created_at", label: "生成日時", hidden: true)
219
228
  @columns[:updated_at] = DatetimeType.new(type: "datetime", key: "updated_at", label: "更新日時", hidden: true)
229
+ @columns[:deleted_at] = DatetimeType.new(type: "datetime", key: "deleted_at", label: "削除日時", hidden: true)
220
230
  @columns.values.each { |col| col.parent = self }
221
231
  return @columns
222
232
  end
@@ -228,18 +238,27 @@ module Ezframe
228
238
  def set_from_db(id)
229
239
  data = dataset.where(id: id).first
230
240
  return nil unless data
231
- self.values = data
241
+ self.set_values(data, from_db: true)
232
242
  return data
233
243
  end
234
244
 
245
+ def set_from_form(form, key_suffix: nil)
246
+ self.set_values(form)
247
+ end
248
+
235
249
  # データベースに新規に値を登録する
236
- def create(value_h)
237
- self.set_values(value_h)
250
+ def create(value_h, from_db: nil, key_suffix: nil)
251
+ if from_db
252
+ self.set_values(value_h, from_db: true, key_suffix: key_suffix)
253
+ else
254
+ self.set_values(value_h, key_suffix: key_suffix)
255
+ end
238
256
  db_value_h = self.get_hash(:db_value)
239
- Logger.debug("column_set.create: #{db_value_h}")
257
+ EzLog.debug("column_set.create: #{db_value_h}")
240
258
  db_value_h.delete(:id)
241
259
  db_value_h[:updated_at] = Time.now
242
260
  db_value_h[:created_at] = Time.now
261
+ EzLog.debug("create: sql=#{dataset.insert_sql(db_value_h)}")
243
262
  return dataset.insert(db_value_h)
244
263
  end
245
264
 
@@ -249,50 +268,57 @@ module Ezframe
249
268
  updated_values = {}
250
269
  @columns.each do |colkey, column|
251
270
  next if column.no_edit?
252
- if column.multi_inputs?
271
+ if column.respond_to?(:form_to_value)
253
272
  new_value = column.form_to_value(value_h)
254
273
  else
255
274
  new_value = value_h[colkey]
256
275
  end
257
- prev_value = column.value
276
+ prev_value = column.db_value
258
277
  column.value = new_value
278
+ # EzLog.debug("key=#{colkey}, pre_value=#{prev_value}, new_value=#{column.db_value}")
259
279
  if column.respond_to?("value_equal?")
260
- unless column.value_equal?(prev_value, column.value)
261
- updated_values[colkey] = column.set_for_db(value)
280
+ unless column.value_equal?(prev_value, column.db_value)
281
+ updated_values[colkey] = column.db_value
262
282
  end
263
- elsif prev_value != column.value
264
- updated_values[colkey] = column.value
283
+ elsif prev_value != column.db_value
284
+ updated_values[colkey] = column.db_value
265
285
  end
266
286
  end
267
287
  if updated_values.length > 0
268
288
  updated_values[:updated_at] = Time.now
269
- # puts dataset.where(id: id).update_sql(updated_values)
289
+ sql = dataset.where(id: id).update_sql(updated_values)
290
+ EzLog.debug("update: sql=#{sql}")
270
291
  dataset.where(id: id).update(updated_values)
271
292
  end
272
293
  end
273
294
 
274
- def values=(value_h)
275
- clear
276
- set_values(value_h)
295
+ # 各カラムに値を格納する
296
+ def set_values(value_h, from_db: nil, key_suffix: nil)
297
+ self.clear
298
+ merge_values(value_h, from_db: from_db, key_suffix: key_suffix)
277
299
  end
278
300
 
279
- # 各カラムに値を格納する
280
- def set_values(value_h)
281
- return unless value_h
301
+ def merge_values(value_h, from_db: nil, key_suffix: nil)
302
+ return self unless value_h
282
303
  @columns.keys.each do |key|
283
- next if key.nil? || key.to_s.empty?
304
+ next if key.to_s.empty?
305
+ target_key = key
306
+ target_key = "#{key}#{key_suffix}" if key_suffix
284
307
  column = @columns[key.to_sym]
285
- next unless column
286
- if column.respond_to?(:form_to_value) && !value_h.has_key?(key)
287
- val = column.form_to_value(value_h)
308
+ if !from_db && column.respond_to?(:form_to_value) # && !value_h.has_key?(key)
309
+ val = column.form_to_value(value_h, target_key: target_key)
288
310
  else
289
- val = value_h[key]
311
+ val = value_h[target_key.to_sym] || value_h[key]
290
312
  end
291
313
  column.value = val
292
314
  end
293
315
  return self
294
316
  end
295
317
 
318
+ def values=(value_h)
319
+ set_values(value_h)
320
+ end
321
+
296
322
  # 各カラムのバリデーション
297
323
  # 戻り値は[ 正規化した値, エラーシンボル(Messageのキーと紐づく) ]を値として、
298
324
  # カラムキーをキーとするハッシュ
@@ -354,7 +380,7 @@ module Ezframe
354
380
  return @edit_keys.map do |key|
355
381
  col = @columns[key.to_sym]
356
382
  unless col
357
- Logger.info "[ERROR] @edit_keys has unknown column:name=#{@name}:key=#{key}"
383
+ EzLog.info "[ERROR] @edit_keys has unknown column:name=#{@name}:key=#{key}"
358
384
  next
359
385
  end
360
386
  col.form
@@ -369,7 +395,7 @@ module Ezframe
369
395
  return @view_keys.map do |key|
370
396
  col = @columns[key.to_sym]
371
397
  unless col
372
- Logger.info "[ERROR] @view_keys has unknown column:name=#{@name}:key=#{key}"
398
+ EzLog.info "[ERROR] @view_keys has unknown column:name=#{@name}:key=#{key}"
373
399
  next
374
400
  end
375
401
  col.view