0

このような外部モデルの特定のフィールドのみを取得する方法はありますか:

@user = User.find(:first, :select => ['`users`.`id`, `users`.`nickname`, `users`.`birthdate`, `users`.`sex`'], :conditions => ['`users`.`id` = ?', id])

city = @user.profile.city.attributes

attributes、都市モデルのすべての属性を取得します。少しだけ手に入れたいです。何かのようなもの:

city = @user.profile.city.attributes[:name, :postcode]

上記のように構文を単純に保つことで可能ですか?attributesハッシュを受け取るために使用したい。

どうもありがとう。

4

4 に答える 4

1

SQL がすべてを返した後にフィールドを選択することを気にしない場合は、これを行うことができます。

@user.profile.city.attributes.select{|k,v| ["name","postcode"].include?(k)}
于 2013-12-10T19:22:27.333 に答える
0

あなたが持っている方法で連鎖する場合、外国のモデルのフィールドを選択することはできません。唯一の方法は、City モデルに対してクエリを実行することです。

City.where(:profile_id => @user.profile.id, :select => ...)
于 2013-03-11T11:10:51.030 に答える
0

属性の後に引数を与えることはできません。そうしないと、ArguementError が発生します。この場合、内部結合を使用してレコードを取得できます。

于 2013-03-11T11:11:06.770 に答える