Объединяет ассоциации в Rails 3 - PullRequest
0 голосов
/ 24 марта 2011

Мне нужно подсчитать количество просмотров актива, этот актив встраивается в несколько блогов, каждый блог генерирует несколько просмотров для этого актива.

UML diagram

Я использую Rails 3 , и я ожидал, что сработает следующее:

class Asset < ActiveRecord::Base
  has_many :embeds
end

class Embed < ActiveRecord::Base
  belongs_to :asset
  has_many :views
end

class View < ActiveRecord::Base
  belongs_to :embed
end

class Assets < ApplicationController
  def show
    asset = Asset.find_by_id(params[:id])
    @views = asset.embeds.views.count
  end
end

Конечно, это не сработало, как ожидалось. Почему это?

И как лучше всего к этому подойти? (объединяет, включает в себя, сырой SQL ...)

1 Ответ

1 голос
/ 24 марта 2011

Все, что вам нужно, это has_many: через

class Asset < ActiveRecord::Base
  has_many :embeds
  has_many :views, :through => :embeds
end

Тогда вы просто делаете это:

@views = asset.views.size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...