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 回答
0
city = @user.profile.city.pluck(:name, :postcode)
于 2015-10-02T21:08:54.037 回答