ruby-on-rails - Ruby/Rails:实现考虑活动记录的 to_csv 的正确方法
问题描述
有段时间没玩了,又回来玩了。。
所以,我有公司。公司有_许多用户和用户属于_一个公司。
@company.users
获取用户列表非常容易......太棒了。
此外,您还可以做一些方便的事情,例如@company.users.where({foo}).limit({bar}).to_json
获取用户的 json 列表等……效果很好。
我想做@company.users.to_csv
或做得更好,@company.users.where({some query}).limit({somenumber}).to_csv
但当然它在那里出错并说“你的意思是to_s”或类似的东西..
我发誓我们曾经能够.to_csv
或至少可以使用序列化器来做到这一点,但如果我记得怎么做,那该死的……有人能指出我正确的方向吗?
我可以为 .to_csv 模型添加一个自定义方法,但是当你得到一堆时这不起作用..想法?我觉得这应该是微不足道的,我很难过。
解决方案
您可以像这样在用户模型上定义 to_csv 函数。
def self.to_csv(users, options = {})
header_columns = [
"Email",
"First Name",
"Last Name"
]
CSV.generate(options) do |csv|
csv << header_columns
users.each do |user|
row = [
user.email,
user.first_name,
user.last_name
]
csv << row
end
end
end
并这样称呼它。
User.to_csv(@company.users)
推荐阅读
- javascript - 如何获取提到的每个角色和成员的 ID
- python - 将项目移动到另一个目录后,它显示此错误 ImportError: cannot import name 'python_2_unicode_compatible' from 'django.utils.encoding'
- javascript - Javascript 函数中的 2 位小数
- python - 如何在每个表情符号之间放置空格
- python - 带有 CNN 和 LSTM 的注意力或自注意力层
- kubernetes - 将 AKS 服务与 Azure API 管理一起使用
- python-3.x - 如何创建一个持续检测列表中抓取的数据是否更改的while循环
- html - HTML 通过 html 链接网页
- amazon-web-services - 无法删除 AWS Lambda 函数
- javascript - 使用 lodash 时间方法的索引