2

有没有合适的方法来写这个,还是我接近这个错误?我需要做一个嵌套包含。我找到了这个链接,但它似乎不起作用。

def show
    @showring = Ring.includes(:stones => :upcharges, :variations).find(params[:id])
end

我有 3 张桌子... 有_many 石头的戒指 有_many upcharges 的石头

楷模:

class Ring < ActiveRecord::Base
  has_many :stones
end

class Stone < ActiveRecord::Base
  has_many :upcharges  
  belongs_to :ring  
end

class Upcharge < ActiveRecord::Base
  belongs_to :stone
end
4

1 回答 1

7
def show
    @showring = Ring.includes([{:stones => :upcharges}, :variations]).find(params[:id])
end

添加了一些括号:)

收取所有附加费:

@showring.stones.each do |s|
  s.upcharges #Do whatever you need with it
end

选项 2:声明一个has_many :through

class Ring < ActiveRecord::Base
  has_many :stones
  has_many :upcharges, :through => :stones
end

然后在视图中:

<%= @showring.upcharges.to_json.html_safe %>
于 2012-07-30T20:42:30.113 回答