Ruby on rails Can';t因为Postgres而取消跟踪用户

Ruby on rails Can';t因为Postgres而取消跟踪用户,ruby-on-rails,ruby-on-rails-3,postgresql,twitter,Ruby On Rails,Ruby On Rails 3,Postgresql,Twitter,Rails 3.2,Twitter应用程序 更新:解决了,但知道为什么它会工作一次,然后当我再试一次时,我在第16行users\u controller.rb上得到@user的Unknown key:。如果我更新一个状态或重新登录它的罚款 解决方案:在添加通知:“Added”后,将\u重定向到每个if/else下的\u路径。我无法为“未找到用户”tho生成错误 我得到了一张的表格,我输入了:用户名,它在后面或后面。不要随波逐流。看起来像这样 错误 PG::UndefinedTable:错误:表“

Rails 3.2,Twitter应用程序

更新:解决了,但知道为什么它会工作一次,然后当我再试一次时,我在第16行
users\u controller.rb
上得到@user的
Unknown key:
。如果我更新一个状态或重新登录它的罚款

解决方案:在添加
通知:“Added”后,将\u重定向到每个if/else下的\u路径
。我无法为“未找到用户”tho生成错误

我得到了一张的表格,我输入了:用户名,它在后面或后面。不要随波逐流。看起来像这样

错误

PG::UndefinedTable:错误:表“id”的子句条目中缺少
第1行:从“关系”中删除,其中“id”。“follower_id”=1和。。。
^
:从“关系”中删除,其中“id”。“follower\u id”=1和“id”。“followerd\u id”=2

身份证不见了?所以我认为问题出在
关系\u controller.rb

@user = User.find_by_username(params[:username])

            if @user
                unless @user.blank?
                if current_user.following? @user
                    current_user.unfollow @user
                  else
                    current_user.follow @user
                end
              else
                flash[:error] = "stupid error";
                end
            end
  def following? user
   self.followeds.include? user
  end

  def follow user
    Relationship.create follower_id: self.id, followed_id: user.id
  end

 def unfollow user
   Relationship.delete follower_id: self.id, followed_id: user.id
 end
def create

    @relationship = Relationship.new(params[:relationship]) 
    #@relationship.followed_id = params[:followed_id]
    @relationship.follower_id = current_user.id

    if @relationship.save
        redirect_to buddies_path, notice: "Phriend added"
        else
        flash[:error] = "Phriend not added";
        redirect_to buddies_path
    end
end

def delete
    @relationship = Relationship.find(params[:id])
    @relationship.delete
    redirect_to buddies_path, notice: "Phriend subtracted"
end
/users/buddies.html.erb

<%= form_for :username, :url => {:action => :buddies} do |f| %>
<%= f.text_field @user, placeholder: "username" %>
<%= f.submit "Add/Subtract" %>
<% end %>
user.rb

@user = User.find_by_username(params[:username])

            if @user
                unless @user.blank?
                if current_user.following? @user
                    current_user.unfollow @user
                  else
                    current_user.follow @user
                end
              else
                flash[:error] = "stupid error";
                end
            end
  def following? user
   self.followeds.include? user
  end

  def follow user
    Relationship.create follower_id: self.id, followed_id: user.id
  end

 def unfollow user
   Relationship.delete follower_id: self.id, followed_id: user.id
 end
def create

    @relationship = Relationship.new(params[:relationship]) 
    #@relationship.followed_id = params[:followed_id]
    @relationship.follower_id = current_user.id

    if @relationship.save
        redirect_to buddies_path, notice: "Phriend added"
        else
        flash[:error] = "Phriend not added";
        redirect_to buddies_path
    end
end

def delete
    @relationship = Relationship.find(params[:id])
    @relationship.delete
    redirect_to buddies_path, notice: "Phriend subtracted"
end
relationships\u controller.rb

@user = User.find_by_username(params[:username])

            if @user
                unless @user.blank?
                if current_user.following? @user
                    current_user.unfollow @user
                  else
                    current_user.follow @user
                end
              else
                flash[:error] = "stupid error";
                end
            end
  def following? user
   self.followeds.include? user
  end

  def follow user
    Relationship.create follower_id: self.id, followed_id: user.id
  end

 def unfollow user
   Relationship.delete follower_id: self.id, followed_id: user.id
 end
def create

    @relationship = Relationship.new(params[:relationship]) 
    #@relationship.followed_id = params[:followed_id]
    @relationship.follower_id = current_user.id

    if @relationship.save
        redirect_to buddies_path, notice: "Phriend added"
        else
        flash[:error] = "Phriend not added";
        redirect_to buddies_path
    end
end

def delete
    @relationship = Relationship.find(params[:id])
    @relationship.delete
    redirect_to buddies_path, notice: "Phriend subtracted"
end

这是很多词,但要注意关系。删除。。需要更改哪些内容?

Relationship.delete需要id。请尝试以下操作:

# app/models/user.rb
def unfollow user
  Relationship.where(:follower_id => self.id, :followed_id => user.id).first.delete
end
或者,也许更清楚一点,如果以下是关系:

def unfollow user
  self.followeds.where(:followed_id => user.id).first.delete
end
#didn't work for @ladiesman217

是的,你搞定了。但是加上你的冒号!然后它成功了。我用了第一个。第二个没那么热。谢谢,很高兴它成功了。Arg。我在
followed:user.id
:followed=>user.id
语法之间切换。抢手货此外,我发现followeds实际上不是一个关联,而是一个集合。很高兴你找到了解决方案。你不必,但是你能在顶部诊断我的新错误吗?如果连续跟踪/取消跟踪两次,似乎会发生这种情况。对于您的flash消息,这将取决于您是否在错误时重定向。如果只是渲染,请使用
flash.now[:error]=“愚蠢的错误”
。这将填充闪存错误以便立即使用。至于另一个错误,看起来您正在传递一个模型(用户)的实例,而它可能应该是一个符号或字符串,这取决于问题所在。我不知道16号线和它周围有什么。顺便说一句,你们有并没有看一些想法?那个教程就是我复制的:P我正在构建一些稍微不同的东西。我还解决了这个问题,我只需在我的each.follow.unfollow语句下添加一行
notice/redirect