Rails:只使用方法'attributes'获取子模型的某些属性

时间:2013-03-11 11:03:43

标签: ruby-on-rails activerecord ruby-on-rails-3.2

有没有办法只获得这样的外国模特的某些字段:

@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 个答案:

答案 0 :(得分:1)

如果您不介意在SQL返回所有内容后选择字段,则可以执行此操作:

@user.profile.city.attributes.select{|k,v| ["name","postcode"].include?(k)}

答案 1 :(得分:0)

以您的方式链接时,无法选择外国模特的字段。唯一的方法是对City模型进行查询:

City.where(:profile_id => @user.profile.id, :select => ...)

答案 2 :(得分:0)

你不能在属性之后给出参数,否则会引发ArgumentError。在这种情况下,您可以使用内部联接来获取记录。

答案 3 :(得分:0)

city = @user.profile.city.pluck(:name, :postcode)