zoukankan      html  css  js  c++  java
  • has_many,class_name,foreign_key,include?,through,source


    has_many的使用技巧


    + def main_manager
    +    creator
    +  end
    +
       module UserMethods
         def self.included(base)
    -      base.has_many :course_subjects
    +      base.has_many :created_course_subjects, :class_name => "CourseSubject",
    +                    :foreign_key => :creator_id
         end
       end


         def add_course(course, user)
    -      return if _check_user(user) || self.course_subject_courses.by_course(course).first
    +      return if !self.is_manager?(user) || self.courses.include?(course)
           self.course_subject_courses.create(:course => course, :manager_id => user.id)
         end


         def remove_course(course, user)
    -      return if _check_user(user)
    -      course_subject_course = self.course_subject_courses.by_course(course).first
    -      course_subject_course.destroy if course_subject_course
    +      return if !self.is_manager?(user)
    +      self.course_subject_courses.by_course(course).destroy_all
    +    end
    +
    +    def is_manager?(user)
    +      self.main_manager == user || self.secondary_managers.include?(user)
         end
    -    private
    -      def _check_user(user)
    -        course_subject_course       = self.creator.id == user.id
    -        course_subject_managership  = self.course_subject_managerships.by_user(user).first
    -        return true if !(course_subject_course || course_subject_managership)
    -      end
       end



       def user_check
         if self.user_id == self.course_subject.creator_id
    -      errors.add :base, 'course_subject_managerships.user_id == course_subject.creator_id' 
    +      errors.add :base, '不能把主管理员设置为副管理员'
         end
       end



         def self.included(base)
           base.has_many :course_subject_managerships
    -      base.has_many :managers, :through => :course_subject_managerships, :source => :user
    +      base.has_many :secondary_managers, :through => :course_subject_managerships, :source => :user
         end



         def remove_manager(user)
    -      course_subject_managership = self.course_subject_managerships.by_user(user).first
    -      course_subject_managership.destroy if course_subject_managership
    +      self.course_subject_managerships.by_user(user).destroy_all
         end



         def self.included(base)
           base.has_many :course_subject_managerships
            # user作为副管理员的课程主题
    -      base.has_many :course_subjects, :through => :course_subject_managerships
    +      base.has_many :manage_course_subjects, :through => :course_subject_managerships, :source => :course_subject
         end


  • 相关阅读:
    利用深度学习网络自动给图像上色的文章和相关工程实现
    Perceptual Losses for Real-Time Style Transfer and Super-Resolution and Super-Resolution 论文笔记
    (转) Dissecting Reinforcement Learning-Part.2
    (转) 多模态机器翻译
    编译caffe的Python借口,提示:ImportError: dynamic module does not define module export function (PyInit__caffe)
    (转)How Hash Algorithms Work
    深度学习 目标检测算法 SSD 论文简介
    (转)能根据文字生成图片的 GAN,深度学习领域的又一新星
    (转) Face-Resources
    (转) AdversarialNetsPapers
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3067645.html
Copyright © 2011-2022 走看看