我通过导轨API创建关系一个的has_many。 我还使用了嵌套的路线。
我的模型,如以下;
class Author < ActiveRecord::Base
has_many :comments
has_many :posts, :through => :comments
end
class Post < ActiveRecord::Base
has_many :comments
has_many :authors, :through => :comments
end
class Comment < ActiveRecord::Base
belongs_to :author
belongs_to :post
end
我的路线如下图所示;
Rails.application.routes.draw do
namespace :api, defaults: { :format => 'json' } do
resources :posts do
resources :comments
end
resources :authors
end
end
所以在这里我的目标是
- 评论是嵌套的路线,这样我可以创建并显示发表评论
- 这里没有任何帖子作者。 笔者是为业主意见
我实现的概念,几乎所有的工作。 但我面临着以下两个问题有关联
- 如何添加额外的字段关联表时,父创建。 在这里我的要求是创建一个职位时,我需要插入的评论一个默认入口。 我的帖子控制器实施创建像下面
def create params = create_params.merge(:record_status => 1) @post = Post.new(params) @post.authors << Author.find(1) if @post.save render :show, status: :created end end def show @post = Post.find(params[:id]) end private def create_params params.permit(:name, :description, :author_id ) end
这里我传递AUTHOR_ID在请求JSON。 这需要添加为comments表作者ID。 现在我只是硬编码为1。我用“<<”为关联条目。 这是工作,但我还需要包括两个字段分别是:意见和:record_status。 还是那句话:评论是请求本身。
注意:这不是轨道MVC应用程序。 这是轨道API和输入作为JSON。
- 当我使用嵌套的路线显示评论我需要显示的作者,也从意见表评论。 我的评论控制方法;
class Api::CommentsController < ApplicationController before_filter :fetch_post def index @authors = @post.authors.where(:record_status => 1, comments: { record_status: 1 }) end private def fetch_post @post = Post.find(params[:post_id]) end end
在这里,我得到了作家,但不是在连接表“意见”正确意见
请帮我解决这些问题