在Rails中获取列值

时间:2014-03-27 08:58:57

标签: ruby-on-rails activerecord

我有一张名为学生的桌子。 我需要从特定学生那里获得电子邮件字段 例如,我在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年级学生的电子邮件地址。 我怎么能得到它?

2 个答案:

答案 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查询。