Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创建多个关系_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 创建多个关系

Ruby on rails 创建多个关系,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在开发一个问答应用程序,我想增加人们发布答案的能力 我已经构建了一个迁移,以便问题具有与用户相同的id rails g migration将用户id添加到问题中,然后添加有很多/属于关联 现在我被困在如何为答案建立关系的问题上 我已经添加了一个答案: railsgscaffold答案:整数 然后我做了一个迁移:(这是一个正确的举动吗?创建一个迁移,使答案与问题具有相同的ID?) rails g迁移将\u-answer\u-id\u添加到\u-answers 并添加了也有许多/属于 但是现在呢

我正在开发一个问答应用程序,我想增加人们发布答案的能力

我已经构建了一个迁移,以便问题具有与用户相同的id
rails g migration将用户id添加到问题中,然后添加
有很多/属于
关联

现在我被困在如何为答案建立关系的问题上

我已经添加了一个答案:
railsgscaffold答案:整数

然后我做了一个迁移:(这是一个正确的举动吗?创建一个迁移,使答案与问题具有相同的ID?)

rails g迁移将\u-answer\u-id\u添加到\u-answers

并添加了
也有许多/属于

但是现在呢?如何使答案与问题的ID相同?因为在show视图中,如果用户发布答案,基本上每个问题都可以看到答案

显示视图:

      <% @answers.each do |answer| %>

      <div class="well bgBlack">
          <div class="media">
            <a class="pull-left">
            <% if answer.user.avatar.blank? %>
                <img src="http://www.adtechnology.co.uk/images/UGM-default-user.png" style="width: 75px;">
            <% elsif answer.user.avatar %>
                <%= image_tag answer.user.avatar, :style => "width:75px;" %>
            <% end %>
            </a>
            <div class="media-body">
              <p class="white"><%= link_to answer.user.username, answer.user, :class => " bg" %></p>
              <p class="white small"><%= answer.answer %></p>
           </div>
           <div class="pull-right">
                <% if user_signed_in? %>
                    <% if answer.user_id == current_user.id %>
                        <%= link_to 'delete', answer_path(answer), :method => :delete, :class => "text-muted white" %>
                    <% end %>
                <% end %>
           </div>
        </div>
      </div>                

      <% end %>

“宽度:75px;”%>

“bg”%>

:delete,:class=>“文本静音白色”%>
用户模型:

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
  has_many :questions, :dependent => :destroy
  has_many :answers, :dependent => :destroy

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end
class用户:破坏
有很多:答案,:依赖=>:毁灭
设计:数据库可验证,可注册,
:可恢复,:可记忆,:可跟踪,:可验证
结束
问题模式:

class Question < ActiveRecord::Base
    belongs_to :user
    has_many :answers
end
类问题
答案模式:

class Answer < ActiveRecord::Base
    belongs_to :user
    belongs_to :question
end
class-Answer
应答控制器:

class AnswersController < ApplicationController
  before_action :set_answer, only: [:destroy]

  respond_to :html

  def create
    @answer = current_user.answers.build(answer_params)
    @answer.save
    redirect_to :back
  end

  def destroy
    @answer.destroy
    redirect_to :back
  end

  private
    def set_answer
      @answer = Answer.find(params[:id])
    end

    def answer_params
      params.require(:answer).permit(:answer)
    end
end
类应答器控制器
不要让答案与问题具有相同的Id,您必须让答案具有自己的Id,以及包含当前答案所属问题Id的列。 加上

t.belongs_to :question
为了你的答案

然后跑

rake db:migrate:redo VERSION="version of answers migration(numbers in files name)"
要在“问题显示”视图中显示正确答案,您需要在“问题控制器显示操作”视图中显示这一点

def show
    @question = Question.find(params[:id])
    @question.answers.all
end
希望这有帮助:)

------------------------------------------------------------------------------------------------------------------------------------------------------ 编辑

还要添加到您的问题模型中

has_many :answers, dependent: :destroy #if you want assosiated answers to be deleted after you delete question.
accepts_nested_attributes_for :answers, reject_if: :all_blank

你真的还在使用RubyonRails3吗?