我有一张名为学生的桌子。 我需要从特定学生那里获得电子邮件字段 例如,我在IRB中得到以下输出
Student.all
Student Load (0.1ms) SELECT "students".* FROM "students"
=> [#<Student id: 1, name: "Bob", grade: 1, email_address: "bob@school.com", created_at: "2014-03-27 08:55:51", updated_at: "2014-03-27 08:55:51">, #<Student id: 2, name: "Neo", grade: 1, email_address: "robert@neo.com", created_at: "2014-03-27 08:56:05", updated_at: "2014-03-27 08:56:05">, #<Student id: 3, name: "Phil", grade: 3, email_address: "phil@school.com", created_at: "2014-03-27 08:56:21", updated_at: "2014-03-27 08:56:21">]
现在我需要获得1年级学生的电子邮件地址。 我怎么能得到它?
答案 0 :(得分:5)
我解决了, 可以使用pluck函数来完成:
mail_addresses = Student.where(grade: 1).pluck(:email_address)
mail_addresses.each do|a|
puts a
end
输出:
bob@school.com
robert@neo.com
=> ["bob@school.com", "robert@neo.com"]
瞧!
答案 1 :(得分:2)
我认为它会对你有帮助。
有很多方法可以编写查询来获取1年级学生的电子邮件地址。
Student.where(:grade => 1).map(&:email)
或
Student.where(:grade => 1).collect(&:email)
或
Student.where("grade = ?", 1).map(&:email)
或
Student.find(:all, :conditions => ["grade = ?", 1]).map(&:email)
你也可以使用select。
Student.where("grade = ?", 1).select("email").map(&:email)
始终使用where
而不是find
的rails查询。使用`where'快速运行而不是查找的rails查询。