1

Railsアプリにはuserとモデルがあります。user_leveluser_levelというフィールドがありますuser_group_id。関係はuserhas_manyuser_levelsです。user_group_id指定されたの(user_level内の)配列を生成したいと思いuser_idます。

特定のuser_idについて、そのuser_levelsは次のように取得できます。

u = User.find(user_id)
ul = u.user_levels

には複数ある場合がありuser_levelsますuser。ruby (または他のrubyメソッド(推奨されるruby))を使用してuser_group_idfromの配列を作成するにはどうすればよいですか?ありがとう。ulmap

4

2 に答える 2

4

これを試して、

user = User.find(user_id)
user.user_levels.pluck(:user_group_id)

またはこれ、

user.user_levels.map(&:user_group_id)

1 つ目は、:user_group_id. たとえば、MySQL ではSELECT user_levels.user_group_id ....

:user_group_id2 つ目は、取得した から を収集しますuser_levels

于 2013-03-11T22:39:10.787 に答える
1

あなたは確かに探していますmap

user_group_ids = ul.map{|x| x.user_group_id}

または省略形で:

user_group_ids = ul.map(&:user_group_id)

nil異なる id のみを持ち、 sを持たないこともできます

user_group_ids = ul.map(&:user_group_id).uniq.compact
于 2013-03-11T22:39:47.873 に答える