1

私はルビーが初めてです。配列を作成したいループがあります:

@line_items.each do |i|
    if @line_items[0].product.user.email == i.product.user.email
        @foodio = i.product.user.email
    else
        @foodio[i] = i.product.user.email
    end
end

上記のコードでは、line_items が別のユーザーであるかどうかを確認しています。

最初の部分で、すべての line_item に同じユーザーがいる場合、メールは @foodio になります。ただし、ユーザーが異なる場合、@foodio[] はすべてのユーザーのメールを保存します。

これを行う方法?助けてください!

4

2 に答える 2

2

これを行うにはさまざまな方法がありますが、ステップに分解するのが最も簡単です。

mapまず、次のメソッドを使用して、line_items の配列を電子メール文字列の配列に変換できます。

emails = @line_items.map { |item| item.product.user.email }

(これは、製品またはユーザーに nil 値がないことを前提としています)。

このリストには重複がある可能性があるため、次のuniq方法で重複を排除できます。

emails = emails.uniq

あるいは単に

emails.uniq!

次に、すべてのメールが同じであるというロジックを適用できます (その場合、リストには 1 つの項目が含まれるため)。

@foodio = emails.count == 1 ? emails[0] : emails

http://ruby-doc.org/core-2.0/Array.htmlを参照

于 2013-04-20T12:59:04.520 に答える