ユーザーが投稿できるアプリをまとめています。各投稿にはタイプ (画像、動画、リンク、テキスト) があり、同様の変数と固有の変数の両方があります。サイト全体で利用できる「コンポーザー」のさまざまなフォームからこれらを送信したいと考えています。
投稿モデル、ギャラリーは次のとおりです。
class Gallery < ActiveRecord::Base
attr_accessible :name, :asset
has_attached_file :asset, :styles => { :small => '160x120#', :medium => "500x", :thumb => "300x200#" }
belongs_to :user
has_many :likes
validates :user_id, presence: true
validates :type, presence: true
validates :name, presence: true, length: { maximum: 140, minimum: 1 }
end
次のように、単一テーブル継承を使用することを考えていました。
class Image < Gallery
end
class Link < Gallery
end
class Video < Gallery
end
class Text < Gallery
end
しかし、私は望む結果を達成していません。1 つには、Gallery コントローラーで次のようなメソッドを使用したいと考えています。
# galleries_controller.rb
def like
@gallery = Gallery.find(params[:id])
@like = @gallery.likes.build(:user_id => current_user.id)
respond_to do |format|
if @like.save
format.html { redirect_to @gallery }
format.js
end
end
終わり
さらに、各投稿タイプのフォームを含み、あらゆる種類の投稿を作成できる「発行者」フォームを作成したいと考えています。
これにどのようにアプローチしますか?私は Rails を初めて使用しますが、Rails が提供するすべての便利さを活用したいと考えています。とても有難い!