-1

次のような配列があります

["", "Fitness", "Stationary", "Looks", "Access", "Food", 
"---\n- Stationary\n- Access\n- ''\n"] ["", "Fitness", 
"Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"]

次のコードを使用してそれらを調べます...

<h3>Categories</h3>
<% for product in Product.select(:category)%>
    <% a = [""].concat(Product.select(:category).map(&:category).uniq) %>
<% end %>
<% a.each do |c| %>
    <p class="text-error"><%= link_to(c.delete("-"), ) %></p>
<% end %>

私はこのようなものを得ます...

Fitness
Stationary
Looks
Access
Food
Stationary Access ''

完全なコードは
https://github.com/abhishekdagarit/sample-app.gitで入手できます。

これを解決するには?データベースに汚れたデータがある場合、どうすればきれいにできますか?

ここで何が問題なのですか?そしてそれを修正する方法は?

4

1 に答える 1

2

アレイにYAMLがあるようです。

jruby-1.7.0.preview2 :001 > require 'yaml'
 => true 
jruby-1.7.0.preview2 :002 > a = ["", "Fitness", "Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"]
 => ["", "Fitness", "Stationary", "Looks", "Access", "Food", "---\n- Stationary\n- Access\n- ''\n"] 
jruby-1.7.0.preview2 :003 > YAML.load(a.last)
 => ["Stationary", "Access", ""] 

categoryこれは、おそらくテーブルの列にジャンクが含まれていることを意味しますproducts。どうやってそこにたどり着いたのか、わかりません。ymlファイルからデータをシードするときに奇妙なことが起こったのでしょうか?

このような状況を回避する最善の方法は、たとえば名前の付いた参照テーブルを作成し、テーブル内の外部キーをcategories使用してこのテーブルを参照することです。これにより、製品を作成するときに、有効なカテゴリのみを含むドロップダウンを表示でき、無効なカテゴリがデータベースに追加されないようにすることができます。category_idproducts

于 2012-09-26T14:41:59.583 に答える