Die Codebasis in "Kontakte Controller" von @contacts = Contact.all
bis @contacts = current_user.contact
geändert, so dass ein Benutzer nur ihre Kontakte sehen kann (derzeit sieht jeder Benutzer alle Kontakte) Dies wirft den folgenden Fehler. Versuchte Feinabstimmung, aber immer noch keinen Erfolg und haben die Datenbank in psql überprüft und beide haben ID-Spalte. Irgendwelche Ideen oder Änderungen im Code?Rails association Benutzer & Kontakte werfen Fehler
Failure/Error: <% if @contacts.any? %> ActionView::Template::Error: PG::UndefinedColumn: ERROR: column contacts.user_id does not exist LINE 1: SELECT 1 AS one FROM "contacts" WHERE "contacts"."user_id" ...^: SELECT 1 AS one FROM "contacts" WHERE "contacts"."user_id" = $1 LIMIT 1
Kontakte-Controller Klasse ContactsController < Application
before_action :contact, only: [:show, :edit, :update, :destroy] before_action :authenticate_user!
def index
@contacts = current_user.contact end
def new
@contact = Contact.new end
def create
Contact.create(contact_params)
redirect_to '/contacts' end
def show end
def edit end
def update
@contact.update(contact_params)
redirect_to '/contacts/' + "#{@contact[:id]}" end
def destroy
@contact.destroy
redirect_to '/contacts' end
private
def contact_params
params.require(:contact).permit(:firstname, :surname, :email, :phone, :image) end
def contact
@contact = Contact.find(params[:id]) end
end
Benutzer Controller
class UsersController < ApplicationController
end
Kontakt Modell
class Contact < ActiveRecord::Base
belongs_to :user
has_attached_file :image, styles: {thumb: "100x100>"}
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
end
User-Modell
class User < ActiveRecord::Base
has_many :contacts, dependent: :destroy
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
Index html
<%if user_signed_in? %>
<%= link_to 'Log out', destroy_user_session_path, method: :delete %>
<%end%>
<% if @contacts.any? %>
<% @contacts.each do |contact| %>
<%= link_to image_tag(contact.image.url(:thumb)), contact_path(contact) %>
<h3><%= contact.firstname%> <%=contact.surname%></h3>
<%=contact.email%><br />
<%=contact.phone%>
<br />
<br />
<%end%>
<%else%>
No contacts yet!
<%end%>
<br />
<br />
<%= link_to 'Add a contact', new_contact_path%>
Schema
ActiveRecord::Schema.define(version: 20160504125849) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "contacts", force: :cascade do |t|
t.string "firstname"
t.string "surname"
t.string "email"
t.integer "phone"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.inet "current_sign_in_ip"
t.inet "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
end
'PG :: UndefinedColumn: FEHLER: Spalte contacts.user_id existiert nicht' - Der Fehler ist klar genug! Sie haben den 'Fremdschlüssel' 'user_id' nicht zu' contacts' hinzugefügt Tabelle – dp7
"Der Fehler ist klar genug!" ist völlig unnötig. Oftmals ist einer anderen Person klar, was eine Person betrauert hat. Deshalb stellen wir Fragen. : P – jaydel