mysqlの文字コードはlatin1を使用していてテンパったのでここにメモ
database.ymlを書く
development:
adapter: mysql2
encoding: latin1
database: データベース名
pool: 5
username: ユーザー名
password: パスワード
adapter: mysql2
encoding: latin1
database: データベース名
pool: 5
username: ユーザー名
password: パスワード
データベースを作る
- 今回は既存のデータに追加する形で使う
- データベースのテーブル名は大文字である
- 必要なデータだけdevelopmentで再現する
$ rails g model user
class CreateUsers < ActiveRecord::Migration
def change
if Rails.env.production?
add_column :USER, :advertisement, :text
add_column :USER, :created_at, :datetime
add_column :USER, :updated_at, :datetime
else
create_table :USER do |t|
t.string :NAME
t.string :PREF
t.string :ADDRESS
t.string :EMAIL
t.string :TEL
t.text :advertisement #今回追加する部分
t.timestamps
end
end
end
end
def change
if Rails.env.production?
add_column :USER, :advertisement, :text
add_column :USER, :created_at, :datetime
add_column :USER, :updated_at, :datetime
else
create_table :USER do |t|
t.string :NAME
t.string :PREF
t.string :ADDRESS
t.string :EMAIL
t.string :TEL
t.text :advertisement #今回追加する部分
t.timestamps
end
end
end
end
今回は1つデータベースに追加する形なので小文字がRailsプロジェクトで作成したカラムである。他は開発環境で再現する為に作った開発環境のみのDB。
またRAILS_ENVの時は「add_column」で「USER」テーブルに追加する
次にモデルの編集
class User < ActiveRecord::Base
self.table_name = "USER" #このままだとseedに挿入出来ないのでテーブル名を指定する。
attr_accessor :ad, :pref, :address, :name # カラム名を変換
after_find do # 変換する
self.pref = self.PREF ? NKF.nkf("-Ew", self.PREF) : ""
self.ad = self.advertisement ? NKF.nkf("-Ew", self.advertisement) : ""
self.address = self.ADDRESS ? NKF.nkf("-Ew", self.ADDRESS) : ""
self.name = self.NAME ? NKF.nkf("-Ew", self.NAME) : ""
end
before_save do
self.PREF = NKF.nkf("-eW", self.pref) if self.pref
self.ADDRESS = NKF.nkf("-eW", self.address) if self.address
self.NAME = NKF.nkf("-eW", self.name) if self.name
self.advertisement = NKF.nkf("-eW", self.ad) if self.ad
end
end
self.table_name = "USER" #このままだとseedに挿入出来ないのでテーブル名を指定する。
attr_accessor :ad, :pref, :address, :name # カラム名を変換
after_find do # 変換する
self.pref = self.PREF ? NKF.nkf("-Ew", self.PREF) : ""
self.ad = self.advertisement ? NKF.nkf("-Ew", self.advertisement) : ""
self.address = self.ADDRESS ? NKF.nkf("-Ew", self.ADDRESS) : ""
self.name = self.NAME ? NKF.nkf("-Ew", self.NAME) : ""
end
before_save do
self.PREF = NKF.nkf("-eW", self.pref) if self.pref
self.ADDRESS = NKF.nkf("-eW", self.address) if self.address
self.NAME = NKF.nkf("-eW", self.name) if self.name
self.advertisement = NKF.nkf("-eW", self.ad) if self.ad
end
end
seedを作成する
中身は以下の通りである。「attr_accessor」で指定したカラム名に変更
テキスト内容は以下の様にして外部ファイルを読み込む
pref = ["北海道","東京都","神奈川県","愛知県","大阪府","福岡県","沖縄県"]
0.upto(200) do |idx|
User.create!(
:name => "団体名第 #{idx}",
:pref => "#{pref[idx % 7]}",
:address => "#{pref[idx % 7]}",
:EMAIL => "mail#{idx}@example.com",
:TEL => "00-1234-5678",
:ad => File.read(Rails.root.join("db/seeds/advertisement.txt"))
)
end
0.upto(200) do |idx|
User.create!(
:name => "団体名第 #{idx}",
:pref => "#{pref[idx % 7]}",
:address => "#{pref[idx % 7]}",
:EMAIL => "mail#{idx}@example.com",
:TEL => "00-1234-5678",
:ad => File.read(Rails.root.join("db/seeds/advertisement.txt"))
)
end
あとはcontrollerを設定すれば表示されるはずです。「次は都道府県別に表示する」をメモします。
0 件のコメント:
コメントを投稿