Re: [問題] 有沒有辦法把資料欄位對映到陣列?
※ 引述《shelary (喵小咩)》之銘言:
: 例如在 SQL 裡是
: id INT(11)
: user1 VARCHAR(200)
: user2 VARCHAR(200)
: user3 VARCHAR(200)
: user4 VARCHAR(200)
: created_at DATETIME
: 用 Ruby 讀進 car 後 user 的部份可以變成陣列
: car.id
: car.user[0]
: car.user[1]
: car.user[2]
: car.user[3]
: car.created_at
我沒試過,也不是很確定 rails 能不能這樣做,不過看個感覺?
class Car < ActiveRecord::Base
attr_reader :user
def initialize
@user = []
create_user_array
end
private
def create_user_array
4.times{ |i| @user << send("user#{i+1}".to_sym) }
end
end
上面可能有問題的部份:
initialize 可以這樣做嗎?是否有 after_find 之類的 hook?
如果不行也沒有的話,可能就要自己呼叫 create_user_array,
然後可以改寫成:
def create_user_array
return if @user
@user = []
4.times{ |i| @user << send("user#{i+1}".to_sym) }
end
另外幾個想法:
4 可否不要寫死?
欠缺 map_with_index, 也欠缺 tap, 否則可以更簡潔
前者 facets 有,後者 1.9 有
map_with_index:
def create_user_array
@user ||= Array.new(4).map_with_index{ |c,i| send("user#{i+1}".to_sym) }
end
tap:
def create_user_array
@user ||= Array.new(4).tap{ |a| 4.times{ |i| send("user#{i+1}".to_sym) } }
end
--
「行け!Loki!」(rocky ロッキー)
-Gurumin ぐるみん 王子? XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
03/21 22:44, , 1F
03/21 22:44, 1F
→
03/21 23:06, , 2F
03/21 23:06, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):