PG :: UndefinedTable:错误:缺少FROM子句

时间:2015-08-07 09:40:37

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

作为我看到的表格的一部分:

<%= form_for(@invitation, method: :post, url: addinvite_path) do |f| %>
  ...
  <label for="email", title="email"></label>
  <%= email_field_tag :email, nil, placeholder: 'Email', autocomplete: 'off', required: true %><br>
  ...

处理表单提交的邀请控制器方法:

def create
  @user = User.find(email: params[:email])
  ...

提交表单会产生指向@user行的错误:

  

PG :: UndefinedTable:错误:缺少FROM-clause条目表&#34; id&#34;

我不确定导致此错误的原因。在debugger行之前放置@user即可确认params[:email]的值为debugger。但是如果我输入User.find(email: params[:email]),也会在 WorkBook.WorkSheets[1].Select; WorkBook.WorkSheets[1].Tab.Color := 255; WorkBook.WorkSheets[1].Tab.TintAndShade := 0; 中返回上面的输入。可能导致错误的原因是什么?

3 个答案:

答案 0 :(得分:3)

您可以尝试使用find_by代替find

def create
  @user = User.find_by(email: params[:email])

答案 1 :(得分:2)

以下是更新的副本:

单个记录

def create
  @user = User.where(email: params[:email]).first
end

对于多记录

 def create
   @user = User.where(email: params[:email])

答案 2 :(得分:2)

  

PG :: UndefinedTable:错误:缺少表“id”

的FROM子句条目

默认情况下,find会查找id。您需要使用find_by

@user = User.find_by(email: params[:email])