代码之家  ›  专栏  ›  技术社区  ›  dangerousdave

如何解决这个3模型activerecord问题?

  •  0
  • dangerousdave  · 技术社区  · 14 年前
    class student < ActiveRecord::Base
      has_many :projects
    
      def has_a_teacher_by_the_name_of(name)
        self.projects.any? { |project| project.teacher.exists?(:name => name) }
      end
    
    end
    
    class project < ActiveRecord::Base
      belongs_to :student
      has_one :teacher
    end
    
    class teacher < ActiveRecord::Base
      belongs_to :project
    end
    

    这是行不通的,因为一个项目可能还没有老师,所以项目.教师引发错误:

    评估时出错不存在吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Thomas R. Koll    14 年前

    你可以添加 has_many :teachers, :through => :projects

    class student < ActiveRecord::Base
      has_many :projects
    
      def has_a_teacher_by_the_name_of(name)
        self.projects.with_teacher.any? { |project| project.teacher.exists?(:name => name) }
      end
    
    end
    
    class project < ActiveRecord::Base
      belongs_to :student
      has_one :teacher
      scope :with_teacher, :conditions => 'teacher_id IS NOT NULL'
    end