Rails 5.2 ActiveAdmin: CSV Экспорт столбцов для ассоциаций - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение 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, все эти столбцы будут пустыми.

столбцы пользователя: идентификатор, имя, адрес электронной почты

столбцы user_courses: имя_курса, завершенные уроки, прогресс

Мне нужен 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
...