我試圖在項目中首次實現多態關聯,但我不是一個協會如何閱讀和想知道如果有別名的方式他們的粉絲?別名的多態關聯名稱
例子:
# 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'也是相同的。請看一看。謝謝 –