У меня есть проект на Rails 6, я Citusdata / activerecord-multi-tenant gem , чтобы обрабатывать мой многопользовательский режим на основе строк. Я пытаюсь создать расписание для пользователя
Сейчас я не могу получить доступ к current_user, чтобы сохранить отношения. Мой вывод на консоль вообще не помогает:
Он связывает отношения с моделью учетной записи и автоматически сохраняет мой account_id, но не может собрать user.id или current_user.id
Я могу бросьте клоп в новые и создавайте блоки, однако, когда я пропускаю клоп ниже @time_sheet.save
, он возвращается как ноль.
Я застрял здесь, не знаете, где я ошибаюсь? Я сделал это много в прошлом.
Вот как все это настроено:
class User < ApplicationRecord
extend FriendlyId
friendly_id :username, use: :slugged
multi_tenant :account
belongs_to :role
has_many :time_sheets
end
class TimeSheet < ApplicationRecord
multi_tenant :account
belongs_to :user (user_id in schema)
end
class TimeSheetsController < ApplicationController
before_action :authenticate_user!
def new
@user = current_user
@time_sheet = TimeSheet.new
end
def create
@user = current_user
@time_sheet = TimeSheet.new(time_sheet_params)
respond_to do |format|
if @time_sheet.save
format.html { redirect_to @time_sheet, flash: { success: "#{@time_sheet.start_date} - #{@time_sheet.end_date} has been sucessfully created." } }
else
format.html { render :new }
end
end
end
end
Моя новая форма расписания
<%= form_for(@time_sheet, :html => { class: "flex w-full items-center mt-64" }) do |f| %>
<% if @time_sheet.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@time_sheet.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @time_sheet.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="w-full text-center">
<p class="text-3xl text-primary-700 mb-16">New Time Sheet</p>
<div class="flex flex-wrap w-full justify-center">
<div class="w-1/4 mr-3">
<%= f.label :start_date, "Start Date", class: 'form-label text-left' %>
<%= f.date_field :start_date, class: 'form-input w-full' %>
</div>
<div class="w-1/4 ml-3">
<%= f.label :end_date, "End Date", class: 'form-label text-left' %>
<%= f.date_field :end_date, class: 'form-input w-full' %>
</div>
</div>
<div class="flex w-full justify-center">
<div class="w-1/4 mt-6">
<%= f.submit "Start Period", class: "p-3 w-full bg-green-800" %>
</div>
</div>
</div>
<% end %>
вывод моей консоли:
Started POST "/time_sheets" for 127.0.0.1 at 2020-03-26 09:43:34 -0600
Processing by TimeSheetsController#create as HTML
Parameters: {"authenticity_token"=>"TuSzdfVr5iYqpvHfoPU+W7dFKQHCSX9cYcvbtqiqwdKOmaxhqQVp0inOjI0/NYuMpBoZPzJggJdeVro9XyV/lQ==", "time_sheet"=>{"start_date"=>"2020-03-26", "end_date"=>"2020-03-27"}, "commit"=>"Start Period"}
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:10:in `set_account_as_tenant'
Account Load (0.3ms) SELECT "accounts".* FROM "accounts" LIMIT $1 [["LIMIT", 1]]
↳ app/controllers/application_controller.rb:12:in `set_account_as_tenant'
Completed 422 Unprocessable Entity in 10ms (ActiveRecord: 1.1ms | Allocations: 3992)
ActiveRecord::RecordInvalid (Validation failed: User must exist):
app/controllers/time_sheets_controller.rb:21:in `block in create'
app/controllers/time_sheets_controller.rb:20:in `create'