有没有办法只获得这样的外国模特的某些字段:
@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
来接收哈希。
非常感谢。
答案 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)