如何从 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
上阅读更多内容
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)
同样显示第一条记录。
我有一个关系 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
上阅读更多内容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)
同样显示第一条记录。