Сначала я не знаю, правильно ли я объявляю переменную сеанса. Кроме того, я поместил его в контроллер приложения, потому что я знаю, что он будет работать. Если есть лучшее место для этого, пожалуйста, дайте мне знать. Желаемый результат - пользователь выбирает команду, в которую он хочет сохранить всю свою работу во время сеанса. Затем, когда объекты сохраняются, они используют переменную сеанса: current_team вместо: current_user. По умолчанию при создании команда будет создаваться для каждого нового пользователя. Вот почему я запрашиваю первую команду для каждого пользователя. Во время сеанса я планирую, чтобы пользователь выбрал команду, в которой он работает / участвует, и выбор будет продолжаться до тех пор, пока он не изменит его.
application_controller.rb
class ApplicationController < ActionController::Base
before_action :authenticate_user!
before_action :set_current_team
def set_current_team
return unless session[:current_team]
session[:current_team] = Team.first.where(user_id: current_user).id
end
end
index. html .erb
<p><%= session[:current_team] %></p>
output
Processing by PagesController#index as HTML
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /home/dev/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
Rendering pages/index.html.erb within layouts/application
Rendered pages/index.html.erb within layouts/application (0.5ms)
Rendered shared/_navigation.html.erb (2.9ms)
Completed 200 OK in 172ms (Views: 168.3ms | ActiveRecord: 0.4ms)
Мои модели: Team, User и таблица соединения Team_member. team_member.rb
belongs_to :user
belongs_to :team
belongs_to :role
end
team.rb
has_many :team_members
has_many :users, through: :team_members
has_many :roles, through: :team_members
end