У меня есть приложение 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