0
我有两个型号:如何获取属于帖子类型的所有帖子? Rails的
class PostType < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: [:slugged, :finders, :history]
belongs_to :blog
belongs_to :post
validates :name, presence: true
end
而且
class Post < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: [:slugged, :finders, :history]
belongs_to :blog
belongs_to :user
has_and_belongs_to_many :tags, join_table: 'tags_posts', :dependent => :destroy
has_and_belongs_to_many :categories, join_table: 'categories_posts', :dependent => :destroy
has_many :comments, :dependent => :destroy
validates :title, presence: true
before_save :set_default_post_type
...
private
def set_default_post_type
if self.post_type_id == nil
post_type_object = PostType.find_by(name: 'post')
self.post_type_id = post_type_object.id
end
end
end
正如你可以看到专属于博客,帖子类型属于两个博客并发布。帖子时创建都是用缺省后的1型(即特定的代码将被清理)
所以我的问题是,我该如何建立关系,这样我可以做创建:
PostType.find(1).posts.all
现在我可以做Blog.find(1).posts.all
,因为博客有许多帖子和帖子属于博客,其中帖子有一个post_type和post_types可以属于很多帖子。
['references'](http://apidock.com/rails/v4.0.2/ActiveRecord/QueryMethods/references)应该和['includes']一起使用(http://apidock.com/rails/ActiveRecord/QueryMethods/includes) – 2014-09-22 18:46:13
yes会修复thx – juanpastas 2014-09-22 18:51:18
我觉得这是错误的。就像我应该可以通过关系来做到这一点。查看帖子属于博客的博客有很多帖子。所以我可以做'Blogs.find(x).posts.all'和Post类型作为帖子只能在帖子类型上发布。所以我应该能够做一些像'PostType.find(x).posts.all'否?为什么我必须做'.where'和'.references'? (它工作的方式......但......仍然如此 – SeekingTruth 2014-09-22 19:22:22