zur Zeit habe ich das Modell commodity_group, es gibt created_by und updated_by Spalten drin. Es gehört dem Benutzer und ein Benutzer hat Warengruppen. Nun möchte ich, wenn ein Benutzer eine Warengruppe erstellt hat, seine ID in created_by speichern, und wenn jemand eine Warengruppe aktualisiert, wird seine ID im Feld update_by gespeichert. Im Moment bekomme ich diesen Fehler:speichere current_user.id in eine andere Spalte
unknown attribute 'user_id' for CommodityGroup.
im Grunde, ich will nicht die Spalte user_id auf die commodity_group Tabelle hinzuzufügen, da sie das gleiche mit der Säule created_by ist. Könnte also jemand mich hier ein wenig führen? Hier sind meine Dateien:
commodity_groups_controller.rb:
class CommodityGroupsController < ApplicationController
before_action :set_commodity_group, only: [:show, :edit, :update, :destroy]
# GET /commodity_groups
def index
@commodity_groups = CommodityGroup.all
end
# GET /commodity_groups/1
def show
end
# GET /commodity_groups/new
def new
@commodity_group = current_user.commodity_groups.build
end
# GET /commodity_groups/1/edit
def edit
end
# POST /commodity_groups
def create
@commodity_group = current_user.commodity_groups.build(commodity_group_params)
if @commodity_group.save
redirect_to commodity_groups_path, notice: init_message(:success, t('message.new_success', page_name: t('page_name.commodity_group')))
else
redirect_to new_commodity_group_path, notice: init_message(:error, t('message.new_error', page_name: t('page_name.commodity_group')))
end
end
# PATCH/PUT /commodity_groups/1
def update
if @commodity_group.update(commodity_group_params)
redirect_to @commodity_group, notice: 'Commodity group was successfully updated.'
else
render :edit
end
end
# DELETE /commodity_groups/1
def destroy
@commodity_group.destroy
redirect_to commodity_groups_url, notice: 'Commodity group was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_commodity_group
@commodity_group = CommodityGroup.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def commodity_group_params
params[:commodity_group]
end
end
commodity_group.rb:
class CommodityGroup < ActiveRecord::Base
extend FriendlyId
friendly_id :code, use: :history
belongs_to :user_created,
class_name: 'User',
primary_key: :id,
foreign_key: :created_by
belongs_to :user_updated,
class_name: 'User',
primary_key: :id,
foreign_key: :updated_by
validates_presence_of :code
validates_presence_of :name
validates_presence_of :user
end
user.rb:
class User < ActiveRecord::Base
extend FriendlyId
include Filterable
friendly_id :slug_candidates, use: :history
has_secure_password
acts_as_paranoid
has_many :activities
has_many :pricing_histories
has_many :commodity_groups
end
danke für Ihre Hilfe. Obwohl ich die Spalte current_user.id immer noch nicht in der Spalte created_by in der Tabelle commodity_group speichern konnte, möchte ich dennoch Ihre Lösung als die beste markieren. Ich werde eine andere Frage für mein aktuelles Problem stellen. Haben Sie einen guten Tag. –