在应用程序中,用户可以输入包含标题、帖子内容和帖子类别的新帖子。因此,创建新帖子将通过一些带有少量字段的简单 html 表单。现在我不知道在哪里放置创建新帖子的逻辑,原因如下:
例如,帖子(或帖子集合)是由不同表构造的对象。
@posts = User.joins(entries: [{storage: :vote}, :category])
.where("votes.count > ?", 0)
.select("users.username AS username,
storages.id AS storage_id,
storages.title AS title,
storages.content AS content,
votes.count AS votes,
categories.category_name AS category_name")
.order("votes.count DESC")
因此,当用户创建新的帖子应用程序时,必须在不同的表中创建新条目:
1.在条目表中创建新条目。2. 在storages表(id, user_id, category_id)
中创建新条目。3. 在投票表
中创建新条目。(id, title, content, entry_id)
(id, count, storage_id)
在帖子resources: posts
是模型的情况下,我可以在帖子控制器中使用类似的东西new
,create
我可以创建新帖子,但是在我不需要帖子控制器或帖子模型的这种情况下呢?所以,问题是:哪个地方更适合放置创建新帖子的逻辑?第一季度
我的解决方案是创建存储控制器,resource: storages, :only => [:new, :create]
然后通过新建和创建此控制器来填充数据库中的不同表?我在这里强迫only
是因为我在这里看不到任何其他 CRUD 操作(例如显示全部或一个存储),因为我不会单独使用存储,而是与其他表一起使用。那么从视图/存储到 new.html.erb 和 create.html.erb 我可以构建新帖子吗?第二季度
另一种解决方案是创建没有我之前所说的“相应”帖子模型的 Post 控制器。在这里我猜我不能使用宁静的路线(CRUD),因为没有:id
帖子?我只能手动制作非静态路由,例如:然后
post 'posts/create/:title/:content/:category' => 'posts#create', :as => 'create_post'
fromparams[:title]
和填充其他表。第三季度params[:content]
params[:category]
我是 Rails 新手,所以请不要大喊大叫:D