そのため、ページとアプリ、およびアプリ コンテンツのシステムをセットアップしています。ページには has_many :app_instances があり、app_instances には has_many :app_contents があります。
私はモデルを持っています:ページ、アプリ、app_instance、app_content
私のモデルでは:
class Page < ActiveRecord::Base
has_many :app_instances
end
class App < ActiveRecord::Base
belongs_to :page
end
class AppInstance < ActiveRecord::Base
belongs_to :page
belongs_to :app
has_many :app_contents
end
class AppContent < ActiveRecord::Base
belongs_to :app_instance
belongs_to :app
end
すべてのコンテンツが個々のコンテンツの下にあり、アプリ インスタンスの下にある 1 つのオブジェクトが必要ですが、これを行う方法はありますか?
コントローラーの 1 つでこれをセットアップします。
@page = Page.includes(:app_instances).find(params[:id])
@page.app_instances を正常にデバッグできますが、@page.app_instances.app_contents と言うとすぐにエラーが発生します。これは、インクルード内にインクルードがないためだと推測していますが、それをどのように書くか、またはそれが「良い習慣」であるかどうかさえわかりません
私はおそらくできることを知っています:
has_many :app_contents, :through => :app_instances
しかし、ID ではなく、コンテンツを保持するインスタンスで編成されたオブジェクトを持っています (それは理にかなっていますよね?) ... すべてのインスタンスをループして、インスタンスのコンテンツを出力できます。
私の DB アーキテクチャは理にかなっていますか? それとも私はこれを間違った方法で行っていますか
ジョエル