2015-08-07 3 views
2

В рамках формы я имею ввиду:PG :: UndefinedTable: ОШИБКА: отсутствует ОТ-п

<%= 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: ERROR: missing FROM-clause entry for table "id"

Я не уверен, что причины этого ERR или. Размещение debugger до строки @user подтверждает, что есть значение для params[:email]. Но также в debugger, если я вхожу User.find(email: params[:email]), он возвращает указанное выше значение. Что может быть причиной ошибки?

+1

Попробуйте использовать с 'find_by'. '@user = User.find_by (электронная почта: params [: email])' – Pavan

+0

Да, тогда это работает! – Nick

ответ

2

PG::UndefinedTable: ERROR: missing FROM-clause entry for table "id"

По умолчанию find будет искать id. Вам необходимо использовать find_by

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

Вот обновленная копия:

одноместным Record

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

для мульти записей

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

Вы можете попробовать find_by вместо find

def create 
    @user = User.find_by(email: params[:email]) 
Смежные вопросы