Rails:在许多关联中获取模型

FeifanZ

我已经尝试过如何导航所需的关联,但是我似乎无法弄清楚。我正在尝试让所有Posts给定的Tag当前,每个帖子都有标题和正文,两者均以表示TaggedText每个TaggedText可以具有许多唯一的标签-例如在Facebook帖子中标记多个人/页面(保存实例时,模型中会强制执行唯一性)。

class Tag < ActiveRecord::Base
  has_many :tagged_texts, through: :tag_ranges
end
class Post < ActiveRecord::Base
  has_many :tagged_texts
end
class TaggedText < ActiveRecord::Base
  # Each TaggedText cannot have more than one of each tag
  has_many :tags, through: :tag_ranges
  belongs_to :post
end
class TagRange < ActiveRecord::Base
  # TaggedText cannot have more than one of each tag
  belongs_to :tagged_text
  belongs_to :tag
end

我尝试加入表,但出现错误Association named 'tag_ranges' was not found on Post

def get_posts_by_tag(tag, page, posts_per_page)
Post
  .joins(:tagged_texts)
  .joins(:tag_ranges)
  .joins(:tags)
  .where('tag.id = ?', tag.id)
  .uniq
  .limit(posts_per_page)
  .offset(page - 1)
  .to_a
end

为了使查询正常工作,我缺少什么?还是应该以某种方式重组模型和关联?

乔·肯尼迪

错误状态时,您需要向模型添加tag_ranges关联Post我还添加了一些可能会或可能不会有用的关联,并且这些关联会大大简化您的查询。并不是说您的TagRange班级的联系就这样。

class Tag < ActiveRecord::Base
  has_many :tag_ranges # need this association in order to get tagged_texts
  has_many :tagged_texts, through: :tag_ranges
  has_many :posts, -> { uniq }, through: :tagged_texts # posts with the given tag
end

class Post < ActiveRecord::Base
  has_many :tagged_texts
  has_many :tag_ranges, through: :tagged_texts # Post now has association named 'tagged_ranges'
  has_many :tags, ->  { uniq }, through: :tag_ranges # tags that given post has
end

class TaggedText < ActiveRecord::Base
  has_many :tag_ranges # all tag ranges for a tag text
  has_many :tags, through: :tag_range
  belongs_to :post
end

现在,您的查询将获取标签的所有帖子:

def get_posts_by_tag(tag, page, posts_per_page)
  tag.posts.limit(posts_per_page).offset(page - 1).to_a
end

希望这会有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby on Rails-与模型的多对多关联

来自分类Dev

Rails增加了许多关联吗?

来自分类Dev

在Rails中管理多对多关联

来自分类Dev

在Rails中查询多对多关联

来自分类Dev

在Rails中,如何获取没有孩子(有很多关联)的记录数?

来自分类Dev

验证Rails中的关联模型

来自分类Dev

Rails模型中的一对多关系

来自分类Dev

多个模型的多对多关联

来自分类Dev

CakePHP 保存有许多关联

来自分类Dev

在Rails活动记录中创建丰富的多对多关联

来自分类Dev

模型关联在Rails中调用

来自分类Dev

获取Rails中模型类型的所有记录的所有关联数据?

来自分类Dev

该模型通过中间模型中的两个多到许多关系

来自分类Dev

Rails:获取关联关联

来自分类Dev

Rails 不保存来自具有多对多关联的模型的复选框输入

来自分类Dev

基于ruby on rails中关联模型属性的模型排序记录

来自分类Dev

单个模型的多个一对多关联

来自分类Dev

Ruby on Rails模型关联

来自分类Dev

Rails关联模型

来自分类Dev

关于 Rails 模型关联

来自分类Dev

Rails 模型关联问题

来自分类Dev

Rails 查询关联模型

来自分类Dev

如何从Rails关联中获取属性

来自分类Dev

以一对多关系获取“许多”对象

来自分类Dev

在Rails中,分组和排序具有许多贯穿模型

来自分类Dev

选择类别:Rails 4多对多关联

来自分类Dev

Ruby on Rails 5 一对多关联

来自分类Dev

如何通过多对多关联获取记录?

来自分类Dev

在Rails的同一查询中从关联模型加载数据