Rails 5.2 ActiveAdmin:关联的CSV导出列

时间:2019-04-03 12:05:08

标签: ruby-on-rails csv associations activeadmin has-many-through

我有具有以下模型和关系的Rails 5.2 API应用程序:

class User < ApplicationRecord
  validates :email ,presence: true
  validates :name ,presence: true
  
  has_many   :user_courses, class_name: "UserCourse", dependent: :destroy
  has_many   :courses, through: :user_courses
end

class UserCourse < ApplicationRecord
  belongs_to :user, class_name: "User", foreign_key: "user_id"
  belongs_to :course, class_name: "Course", foreign_key: "course_id"
end

class Course < ApplicationRecord
  validates_presence_of :title
  validates_presence_of :author
  validates_presence_of :language

  has_many   :user_courses, class_name: "UserCourse", dependent: :destroy
  has_many   :users, through: :user_courses
end

在活动管理系统中,我想在user.rb csv中创建每个用户的user_course中的数据。 如果用户没有user_course,则所有这些列将为空。

用户列:ID,名称,电子邮件

user_courses的列:course_name,completed_lessons,进度

我想要一个包含所有这些列的csv,但我不知道如何编写。 这是我到目前为止所做的,但是没有用:

## user.rb in admin


  # Customize CSV export
    csv do
      column ("User id") { |user| user.id }
      column ("User Name")  { |user| user.name }
      column ("Email")   { |user| user.email }
      # fetch only 'courses' that are assosicate with users scope
      if user.user_courses
        user.user_courses.each do |user_course|
          column ("Course Name") { |uc| uc.course_name }
          column ("Completed Lessons") { |uc| uc.completed_lessons }
          column ("Progress") {|uc| uc.progress }
        end
      end
      column :created_at
      column :updated_at
  end

先谢谢您

0 个答案:

没有答案