我在“belongs_to”关联中访问模型时遇到了困难。我有“发布”和“评论”模型,每个模型都可以有很多“喜欢”。现在,我可以访问
comment.likes
或
post.likes
但如果我尝试
,我会得到一个“未定义的方法”like.comment
我尝试按如下方式实现Rails关联:
class Post < ActiveRecord::Base
include Likeable
....
class Comment < ActiveRecord::Base
include Likeable
我有一个“可爱的”模块:
module Likeable
extend ActiveSupport::Concern
included do
has_many :likes, as: :likeable,
class_name: "Like",
dependent: :destroy
end
我的“喜欢”模型部分看起来如下:
class Like < ActiveRecord::Base
validates :author_id, presence: true, uniqueness: { scope: [:likeable_id, :likeable_type]}
belongs_to :likeable, polymorphic: true
我相信一切都在数据库层上正确设置。上面的Rails层看起来如何? 任何建议/意见赞赏!谢谢!
答案 0 :(得分:2)
多态关联的整个想法是,从Like
方面来看,你不需要知道它与之关联的内容,以便调用该关联对象。
IE中。您应该仅使用like.likeable
访问关联的对象,并返回Comment
或Post
实例,具体取决于与此Like
相关联的实例。