我正在整理一个允许用户发布帖子的应用程序。每个帖子都有一个类型(图像、视频、链接、文本),其中包含相似和唯一的变量。我想通过整个站点可用的“作曲家”中的不同形式提交这些。
这是后期模型,画廊:
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
但我没有达到我想要的结果。一方面,我想使用 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 的新手,我想利用它提供的所有便利。非常感激!