一、什么叫多态关联?
“多态关联”。在多态关联中,在同一个关联中,模型可以属于其他多个模型。例如,收藏模型可以属于医院、医生、药品多个模型
二、收藏(liking)——医院(hospital)、医生(physician)、药品(medication)
1、新建模型liking:
2、belongs_to :likeable, polymorphic: true, counter_cache: :likes_count
3、新建模型hospital:
4、has_many :likings, as: :likeable
5、新建模型physician:
6、has_many :likings, as: :likeable
7、新建模型medication:
8、has_many :likings, as: :likeable
三、关联之后的方法:
在医生、医院、药品模型上
1、@hospital.likings表示医院收藏的集合
2、@physician.likings表示医院收藏的集合
3、@medication.likings表示医院收藏的集合
在liking模型上:
1、@liking.likable可以获取父对象
四、控制器
def index
@likings = current_user.likings.order('created_at desc').page params[:page]
end
五、在视图中:
[:micro, liking.likeable]可以生成
http://localhost:3000/micro/physicians/486这样的url
= liking.likeable.name 可以获取父对象的名字
六、创建收藏的逻辑:待续,可以一起讨论
六、创建收藏的逻辑:待续,可以一起讨论