#ruby-on-rails #ruby-on-rails-5
#ruby-on-rails #ruby-on-rails-5
Вопрос:
user
has_many project
и project
имеет много user
.
project_user
таблица имеет атрибут project_id
и user_id
.
использование devise gem для пользователей.
когда пользователь создает новый проект, проект создается пользователями. но проект не виден пользователю в index.html.erb
поле зрения.
вот мой код: project.rb
has_many :project_users
has_many :users, through: :project_users
project_user.rb
class ProjectUser < ApplicationRecord
belongs_to :user
belongs_to :project
end
user.rb
has_many :project_users
has_many :projects, through: :project_users
projects_controller.rb
def index
@projects = current_user.projects.all.order("created_at DESC")
end
def create
@project = current_user.projects.build(project_params)
respond_to do |format|
if @project.save
format.html { redirect_to projects_url, notice: 'Project was successfully created.' }
format.json { render :show, status: :created, location: @project }
else
format.html { render :new }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
params.require(:project).permit(:project_name, :from_date, :to_date)
index.html.erb#проект
<% @projects.each do |project| %>
<% end %>
form.html.erb(проект)
<%= form_with(model: project, :html => {:id => 'project-form-validation'}, local: true) do |form| %>
<div class="row select-date-wrapper">
<div class="field columns large-6">
<%= form.label :project_name,:class=>"required" %>
<%= form.text_field :project_name %>
</div>
<div class="field columns large-2">
<%= form.label :from_date,:class=>"required" %>
<%= form.text_field :from_date, class: 'datepicker', readonly: 'true' %>
</div>
<div class="field columns large-1"></div>
<div class="field columns large-2">
<%= form.label :to_date,:class=>"required" %>
<%= form.text_field :to_date, class: 'datepicker', readonly: 'true' %>
</div>
<div class="field columns large-1"></div>
</div>
<div class="row">
<div class="actions columns button-right">
<br>
<%= form.submit :class => "button primary" %>
</div>
</div>
<% end %>
Комментарии:
1. В чем вопрос?
2. @jvillian, я не могу видеть
projects
созданное текущим пользователем в их представлении.3. @jvillian, текущий пользователь, создающий проект, не может видеть свой проект в моей текущей
has_many
has_many
ассоциации. как я вижу, мои проекты создаются, но отображение вproject_user
таблице не обновляется.
Ответ №1:
Вам необходимо добавить созданный проект к проектам пользователя. Я думаю, вы можете сделать следующее:
if @project.save
current_user.project_users.create(project: @project)
# rest of the code
end
Комментарии:
1. получение ошибки
undefined method `user_projects' for #<User:0x00007f8c609c0b50>
2. Я обновил ответ, он
current_user.project_users.....
3. @rock: — Вам не нужна
user_id
таблица проектов, так как у вас отношения «Многие ко многим», а не отношения «Один ко многим».