2011-08-01 13 views
0

mysqlデータベースからユーザ情報を取得しようとしているとき、カラム値にいくつかの迷惑文字が追加されていて、カラム値が表示されませんデータベース。ここでユーザ情報の取得 - Rails 3に追加されたジャンク文字の取得

は、ユーザ情報をretriveするために使用されるコードである。得られ

user_controller.rb 
edit_user = User.find(params[:id]) 
@realname = edit_user.realname - value is displayed properly 
@username = edit_user.username - value is displayed properly 
@email = edit_user.email - value is displayed by junk characters - but value is not displayed in rails console and value can be seen in mysql database. 

すなわち電子メールの値が0 /で、JOB_DESCはオフィス/

@phones = edit_user.phones 
    @phones.each do |phone| 
    if phone.phone_type == "Office" 
     @phone1 = phone.number 
    elsif phone.phone_type == "Mobile" 
     @phone2 = phone.number 
    elsif phone.phone_type == "Home" 
     @phone3 = phone.number 
    end 
    end 

user.rb - model: 
class User < ActiveRecord::Base 
    has_many :phones 
    has_many :addresses 
end 
phone.rb 
class Phone < ActiveRecord::Base 
    belongs_to :user 
end 
address.rb 
class Address < ActiveRecord::Base 
    belongs_to :user 
end 
として1111/ アドレス値として0/ 電話値であります

誰かが間違いを犯している場所を教えてくれる人がいらっしゃることがありますか、またはジャンク文字なしでユーザー情報を正しく取得する方法を提案できますか?

は、私はあなたが提供したコードの外で起こって何かがなければならないと思います のSudhir

+1

文字エンコーディングの問題の結果を投稿することができますか? –

+0

私は何もエンコーディングしていません - レコードを保存して検索するだけです。 – sudhir

答えて

0

ありがとう。レールコンソールで

は、次のような...

u = User.new 
u.realname = "1" 
u.username = "2" 
u.email = "[email protected]" 
u.save 

x = u.id 

u = User.find(x) 
puts x.email 

を行うと、おそらく、この

+0

irb(main):006:0> u = User.new =>#<ユーザID:nil、ユーザ名:nil、実名:nil、電子メール:nil、job_desc:なし、created_at:nil 、updated:nil> irb(main):007:0> u.realname = "1" => "1" irb(main):008:0> u.username = "2" => "2 " irb(main):009:0> u.email =" [email protected] " =>" [email protected] " irb(main):010:0> u.save => true 0:012:0:x:u.id => 49 irb(main):012:0> u = User.find(x) =>#<ユーザID:49、ユーザ名: "2 "、realname:" 1 "、email:#、job_desc:nil、created_at:2011、updated_a T:#> IRB(メイン):013:0> – sudhir

+0

こんにちは、私はあなたのMySQLの列の一つ以上のタイプがあり、私は問題を参照してくださいだと思いますDECIMALはあなたのコード出力が電子メールの結果として 'BigDecimal:1fac5b0、' 0.0 '、4(8)'と言っていると思います。あなたのテーブル構造をよく見て、文字列がVARCHARで日付がDATETIMEであることを確認してください。あなたがどのように乗っているか教えてください。最悪の場合は、テーブルを取り外して新しいテーブルを作成します。 – creativetechnologist

関連する問題