ezframe 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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