我试图在项目中首次实现多态关联,但我不是一个协会如何阅读和想知道如果有别名的方式他们的粉丝?别名的多态关联名称
例子:
# app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
# app/models/post.rb
class Post < ActiveRecord::Base
has_many :comments, :as => :commentable
end
# app/models/picture.rb
class Picture < ActiveRecord::Base
has_many :comments, :as => :commentable
end
比方说,我想找回从给定评论过的信息例如,terrific_post = Comment.first.commentable
只是没有在我看来读好。有没有办法在评论模型中别名不同的关联名称,并避免依赖单个名称,如commentable
?我意识到你可以选择一个更符合你的具体dsl的名字,而不是说“可评论的”,但是我宁愿继续参考与他们的关系有关的姓名(或变体)的关联,类似于Comment.first.post
和`Comment.first如果可能的话。
在一天结束的时候,对于多态关联的灵活性并不是很大的牺牲。只是好奇,如果解决方案存在。
注意:以下示例取自The Odin Project,它很好地解释了各种关联类型。
非常感谢您!似乎完美地工作。在覆盖主动记录方法时,我一直有些犹豫,不想在轨道外面用轨道来覆盖主动记录方式,有些犹豫不决,以免覆盖积极记录 – Dom
* Ugh原谅那些乱码,在旅途中打字并不总是一个好主意。我试图询问如何覆盖activerecord方法。在过去,我被警告过,但至少在这种情况下,它似乎工作得很好。采取这种方法会有什么需要注意的吗? – Dom
我已经更新了答案,以确保'Comment#post'方法只返回'Post'或nil类型的实体,并且'Comment#picture'也是相同的。请看一看。谢谢 –