ruby on rails:多态关联

时间:2012-10-12 00:27:13

标签: ruby-on-rails polymorphic-associations

Ruby on Rails Guide中,imageable是模特吗? imageable是否有数据库表?

imageable_id如何指向员工和产品的两个不同id属性?

3 个答案:

答案 0 :(得分:4)

不,在您链接的页面中,imageable表示与Employee或Product的多态关联。为了使多态关联起作用,rails需要通过查看db中的'imageable_type'条目然后查看相应对象的id(imageable_id)来确定对象的“类型”(即Employee或Product)。 )。

例如,imageable_type =>的数据库中的条目'员工'和imageable_id => '4'。 ActiveRecord会发现关联是在employees表中的id 4。

答案 1 :(得分:2)

imageable_type帮助rails了解模型属于哪个类。 在使用imageable:references生成模型时,rails会在您的迁移中自动生成imageable_id和imageable_type列。

答案 2 :(得分:1)

可成像不是模特。它是某个模型的占位符(在这种情况下是Employee或Product)。

imageable_id指向不同类型ID的方式是Picture还具有imageable_type属性。对于给定的Picture实例,它通过查看imageable_id来了解ID imageable_type代表什么类型。