0

Railsを学ぶために作成しているアプリがあります。これは、awesome_nested_setを使用してネストされたページを作成する単純なページマネージャーです。STIを使用したいのですが、それを機能させる方法がわかりません。私が見たSTIの例のほとんどは、メインの「ペット」モデルと「犬」と「猫」のサブモデルを含んでいます。私はそれを実際の例にするのに苦労しています。これが私がページをどのように使用しているかです。

3つの異なるページの「タイプ」:ブログ、写真、モバイル写真。これを実際に説明する唯一の方法は、Coldfusion BlogPhotoMobilePhotosに組み込まれている私の現在のサイトを表示することです。

すべて同じテーブルとほぼ同じ属性を使用します。写真セクションは写真属性を使用し、アップロード、サイズ変更などの小さな変更がありますが、それ以外はすべてが異なる「タイプ」間で同じです。ページタイプの主な違いは、ページのレイアウト方法とアクセス方法です。例えば:

インデックス上:
/photos-「写真」のタイプですべてのページを表示するレイアウトサムネイル/blog-
「ブログ」のタイプですべてのページを表示するレイアウト

ショーで:
/ photos/1-前/次の写真付きの大きな写真を表示
/blog/2-前/次のエントリ付きのブログエントリを表示

タイプごとに個別のコントローラーが必要ですか?ページの作成/更新方法を変更する必要がない場合、個別のモデルが必要ですか?必要なレイアウトをレンダリングするアクションを指すルートを作成するだけですか?私は「STI」という言葉を目にしていて、それを必要以上に難しくしていると思います。「レールウェイ」を学びたいので、気をつけているだけです。STIも必要ですか?

どんな助けでも大歓迎です、私はこのこぶを乗り越える必要があります、誰かがそれを「クリック」させるのを手伝ってください!:)

4

1 に答える 1

3

ここで、STI を達成するためのステップバイステップのガイドとなるブログ記事を書きました。

Photo クラスが画像をアップロードする必要がある場所にある限り、これを行うことができます

class Photo < Page

attr_accessor :photo_file_name, :photo_file_size, :photo_file_type

  has_attached_file :photo,
                  :url => "#{your_upload_url}",
                  :path => "#{your_upload_path}"
end

このコードを使用する場合は、アップロードされたファイルの file_name を格納するページ モデルに photo という名前の列が必要です。

これがお役に立てば幸いです。これについてさらに提案が必要な場合は、ここにいます。:D

アップデート

質問をもう一度読んだ後、すべての子 STI クラス用に別のページも必要であることに気付きました。したがって、それを処理するには別のコントローラーが必要になります。

于 2010-12-10T06:33:18.507 に答える