1

Merchant属性nameとで呼び出される Rails モデルがありますid。Rails とデータベースが特定のマーチャントの名前で一致しないという問題が発生しています。

これはレールから起こっていることです:

1.9.2p320 :001 > Merchant.where(:id=>550).count 
=> 1 
1.9.2p320 :002 > Merchant.where(:id=>550).first.name
=> nil 

そして、これはmysqlから起こっていることです:

mysql> SELECT name FROM merchants WHERE id=550;
+----------+
| name     |
+----------+
| Testname |
+----------+
1 row in set (0.00 sec)

私の最初のコードウィンドウでレールが使用しているデータベースによるとFlyersAdmin::Application.config.database_configuration[::Rails.env]、2番目のウィンドウでmysqlが使用しているものと同じです。なぜ「Testname」ではなく商人の名前なのnilか、私は困惑しています。

注目に値するのは、最近、両方が使用しているデータベースを新しいデータで更新したことです。これが矛盾を引き起こしている可能性はありますか? Rails がデータをキャッシュしていて、更新されたデータベースをまだ見ていないのかもしれません。私は困惑しています、どんな助けも大歓迎です。

編集: 謎に追加する別の手がかりがあります: 実行Merchant.where(:name => nil)すると空のリストが返されます! ID 550 のマーチャントが選択されないのはなぜですか?

4

2 に答える 2

0

とにかく 1 つのレコードを選択するときに .first を実行するのはなぜですか?

Merchant.find(550).name

あなたの記録を提供する必要があります。

試す

Merchant.first.name

モデルの最初のレコードを取得します。

于 2013-03-02T18:02:45.407 に答える
0

これの出力は何Merchant.where(:id=>550).first.nameですか?商人を作成した可能性がありますが、名前を定義していないため、デフォルト値が取得されましたnil

于 2013-03-02T17:21:22.490 に答える