【发布时间】:2014-09-23 04:08:49
【问题描述】:
我有两个模型:
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 可以属于很多帖子。
【问题讨论】:
标签: ruby-on-rails