【发布时间】:2020-04-25 02:14:03
【问题描述】:
首先我不知道我是否正确声明了会话变量。另外,我把它放在应用程序控制器中,因为我知道它会运行。如果有更好的地方放这个,请告诉我。期望的结果是用户在会话期间选择他们希望将所有工作保存到的团队。然后当对象被保存时,他们使用会话变量: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>
输出
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
【问题讨论】:
标签: ruby-on-rails ruby session-cookies