如何从 Rails 中具有 has_many 关系的 table 获取第一条和第二条记录?

How to get first and second records from a table having has_many relation in Rails?

我有一个关系 contacts :has_many emails电子邮件:belongs_to 联系人。 我的 contacts.xls.erb 文件:

class ContactsXLS < BaseXLS
  def add_content
   contacts.each do |contact|
    write_array [contact.title,
    contact.updated_at,
    contact.email,
    contact.phone,
    first_email(contact),
    second_email(contact) ]
   end
  end

  def first_email(contact)
    contact.emails.each do |emm|
    emmm.first.email
    end
  end
  def second_email(contact)
    contact.emails.each do |emm|
    emmm.last.email
    end
  end

结束

我必须从属于上述文件中特定联系人的电子邮件 table 添加电子邮件字段。 这里2tables之间的关系是: emailable_id in emails table = id in 联系人 table.

我在控制台中试过:

c =Contact.find('1wqwqwqw212121')
c.emails.first.email #ex@ex.com

我认为我们需要编写一个方法并调用这个数组,但我不能。我的要求是打印第一条记录和第二条记录,请帮忙

你可以重写那些方法

已经有 first second,..forty_two for rails 的 finder 方法,你也可以通过使用像 find_nth

这样的索引来获取任何数据

您可以在 finder methods

上阅读更多内容

First and Second

def first_email(contact)
  contact.emails.first.email
end

 def second_email(contact)
  contact.emails.second.email   
 end

然后

c =Contact.find('1wqwqwqw212121')
ContactsXLS.new.first_email(c)
ContactsXLS.new.second_email(c)

根据关系 联系人 :has_many 电子邮件, 我们可以在数组中写成:

contact.emails.first.try(:email) 

同样显示第一条记录。