如何在rails中跨越belongs_to和has_many关系?

时间:2013-05-03 18:10:26

标签: ruby-on-rails model

我有以下模型:

class Origtext < ActiveRecord::Base
  attr_accessible :book, :chapter, :textual, :verse
  has_many :reviews
end


class Review < ActiveRecord::Base
  belongs_to :origtext
  attr_accessible :description
end

以下内容收集了该书所有的原文&#39;圣经&#39;

@origtexts = Origtext.where(:book => 'Bible')

如何收集与某本书相关的所有评论的红宝石代码是什么?

发布代码以迭代评论:

# @reviews.each do |review|
    #   puts review
    # end

3 个答案:

答案 0 :(得分:2)

在您的控制台中尝试此操作:

@origtexts = Origtext.where(:book => 'Bible')

@origtexts.each do |orig_text|
  puts orig_text.name
  puts orig_text.reviews # puts the reviews associated with the orig_text
end

或者带有id:

@origtext = Origtext.where(id: params[:id]).first
@origtext.reviews # returns the reviews associated with the origtext

或直接来自Review模型:

the_holy_bible = Origtext.where(:book => 'Bible').first
@reviews = Review.where(origtext_id: the_holy_bible.id)

答案 1 :(得分:0)

它应该如下所示:

@reviews = @origtexts.each(&:reviews)

答案 2 :(得分:0)

@reviews = Review.where(:origtext => { :book => 'Bible' })