rails中的关联关系

发表于:,更新于:,By Sally
大纲
  1. 1. rails中的关联关系
  2. 2. 一般在模型中,定义表间关系
  3. 3. 那,各个模型之间的查询就可以简单的表示为如下的形式:

rails中的关联关系

  1. belongs_to
  2. has_many
  3. has_one

一般在模型中,定义表间关系

eg:

  • 一个案例是属于户主的,也是属于工人和监理的;
    同时,一个案例有很多个案例细节
1
2
3
4
5
6
class Decoratingcase < ActiveRecord::Base
belongs_to :householder
belongs_to :foreman
belongs_to :supervisor
has_many :decorating_case_details
end
  • 一个案例细节属于某个案例,也属于某个案例阶段
    同时,一个案例细节包含很多个细节图片
1
2
3
4
5
class DecoratingCaseDetail < ActiveRecord::Base
belongs_to :decorating_case
belongs_to :decorating_case_stage
has_many :decorating_case_images
end
  • 细节图片呢,就是属于案例细节的
1
2
3
class DecoratingCaseImage < ActiveRecord::Base
belongs_to :decorating_case_detail
end

那,各个模型之间的查询就可以简单的表示为如下的形式:

  • 根据案例细节查找案例阶段的名字: 某个案例细节只属于一个案例阶段 (try()方法确保不会出现找不出数据而报错)
1
decorating_case_detail.decorating_case_stage.try(name)
  • 已知案例细节查找该案例的施工地址
1
decorating_case_detail.decorating_case.address
  • 已知案例细节,找出该细节的所有图片: 某个细节包含多个细节图片
1
decorating_case_detail.decorating_case_image.map(&:image_url)