浏览 2182 次
锁定老帖子 主题:has_many 多态的多态
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-28
Category has_many Posts 当Category和Post同为多态时。这样 class User < ActiveRecord::Base has_many :categories, :as => :owner #owner_id owner_type has_many :posts, :through => :categories end class Category < ActiveRecord::Base has_many :posts, :as => :postable #postable_id, postable_type belongs_to :user, :polymorphic => true end class Post < ActiveRecord::Base belongs_to :postable, :polymorphic => true end 当调用user.posts时就会报错 错误原因 Unknown column 'categories.postable_id' in 'on clause': SELECT posts.* FROM posts INNER JOIN categories ON posts.id = categories.postable_id WHERE ((categories.owner_id = 1) AND (categories.owner_type = 'User')) 红色部分期望的应该是posts.postable_id = categories.id,这里正好相反了 而将代码改为 class User < ActiveRecord::Base has_many :categories, :foreign_key => "owner_id", :conditions => "owner_type = 'User'" #owner_id owner_type has_many :posts, :through => :categories end 就可以正常使用了。 y? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |