我尝试使用Rails应用程序生成csv文件时修复性能。数据总数约为24000个数据。我在这里尝试使用pluck
方法,但它没有显示出来。在我更改为pluck
之前,它使用的是find_each
方法。我改变之前的代码是:
data = CSV.generate do |csv|
csv << header_column # name of header csv files
Class.includes(:other_class).find_each do |user|
csv << [
user.id,
user.name,
user.email,
etc
]
end
end
上面的代码运行正常,但是生成文件需要很长时间才能生成24000个数据。然后我通过使用find_each
更改pluck
来更改,然后它没有显示任何数据。我也检查控制台它返回空值,实际上是从Class?
更新
架构成员:
create_table "members", force: :cascade do |t|
t.string "email"
t.string "name"
t.string "phone_number"
t.string "nationality"
etc related information as member
end
架构投资者:
create_table "investors", force: :cascade do |t|
t.integer "member_id"
t.string "approval_status"
t.string "company_registry"
t.string "director_registry"
t.string "bank_name"
etc related information as investor
end
架构钱包:
create_table "wallets", force: :cascade do |t|
t.integer "investor_id"
t.integer "currency_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["currency_id"], name: "index_wallets_on_currency_id", using: :btree
t.index ["investor_id"], name: "index_wallets_on_investor_id", using: :btree
end
架构货币:
create_table "currencies", force: :cascade do |t|
t.string "code"
t.string "symbol"
t.decimal "exchange_rate", precision: 12, scale: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
答案 0 :(得分:1)
首先 - pluck
不接受阻止。
你可以试试这个:
data = CSV.generate do |csv|
csv << header_column # name of header csv files
Class.includes(:other_class).pluck(:id, :name, :email).each do |row|
csv << row
end
end
Class.includes(:other_class).pluck(:id, :name, :email)
返回数组,其中每个数组包含:
- id
- 姓名
- 电子邮件
Class
个对象的。如果您想从other_class
获取数据,请使用:'other_class.id'
(作为pluck
方法参数)