我正在使用 gem postmarkdown在 RoR 中创建博客。gem 中的 Post 模型不受数据库支持(它使用 ActiveModel)。对于不使用数据库来存储博客文章的博客,我将如何将 Comment 模型与 Post 模型相关联?
例如,对于一个由 ActiveRecord 数据库支持的典型博客,我可以设置关系(例如)
class Post < ActiveRecord::Base
has_many :comments
但是,在这种情况下,我不知道创建评论模型的最佳方法。
我正在使用 gem postmarkdown在 RoR 中创建博客。gem 中的 Post 模型不受数据库支持(它使用 ActiveModel)。对于不使用数据库来存储博客文章的博客,我将如何将 Comment 模型与 Post 模型相关联?
例如,对于一个由 ActiveRecord 数据库支持的典型博客,我可以设置关系(例如)
class Post < ActiveRecord::Base
has_many :comments
但是,在这种情况下,我不知道创建评论模型的最佳方法。
如果 Post 是一个 activemodel,则不能使用 activerecord 中的方法设置关系。您可以在github上查看自述文件。它没有那个功能。
一种方法是简单地在 Post 模型中定义自己的方法。
class Post
def comments
Comment.where(:post_id => id)
end
end
class Comment < ActiveRecord::Base
def post
Post.find_by_id(post_id)
end
end
编辑:啊,我刚刚发现了一个类似的问题,Ruby on Rails 3 (3.1) ActiveModel Associations (tableless nested models)。你也可以检查一下。