我有我的has_many:through關係的複選框的常規。我的問題是,我不能創建一個新項目並勾選複選框。我收到驗證錯誤「用戶無效」。這真的很奇怪。奇怪的has_many:通過新的記錄表格問題
如果我創建了一個沒有用戶檢查的項目,它可以工作,我可以在編輯項目時檢查它們。
- User.each do |user|
%label.checkbox{title: user.email}
= check_box_tag 'project[user_ids][]', user.id, @project.user_ids.include?(user.id)
= truncate(user.full_name, length: 16)
所以簡而言之:我可以編輯項目,但不能創建新項目。有任何想法嗎?
編輯: 我有三個模型,用戶,項目,項目,其中最新的是其他人之間的關係。這是當我試圖創建一個項目並將用戶關係傳遞給它時,我發生了問題。編輯時,一切都像魅力一樣。
User
id
email
has_many :projectships, dependent: :destroy
has_many :projects, through: :projectships
Project
id
name
has_many :projectships, dependent: :destroy
has_many :users, through: :projectships
Projectship
id
user_id
project_id
belongs_to :project
belongs_to :user
validates :project_id, presence: true
validates :user_id, presence: true
ProjectsController:我使用4.0.0.beta
# GET /projects/new
def new
@project = Project.new
end
# POST /projects
def create
@project = Project.new(project_params)
if @project.save
redirect_to @project, notice: t('flash.project_created')
else
render :new
end
end
# GET /projects/:id/edit
def edit
@project = Project.includes(:users).find(params[:id])
end
# PUT /projects/:id
def update
@project = Project.find(params[:id])
if @project.update_attributes(project_params)
redirect_to :back, notice: t('flash.project_updated')
else
render :edit
end
end
private
def project_params
params.require(:project).permit(
:client_id, :currency, :description, :end_date, :estimated_hours,
:fixed_price, :hourly_rate, :name, :start_date, :status,
:billable_type, :user_ids
)
end
P.S D.S
聽起來像是你的模型的問題,你能分享嗎?那個'''User.create!''在控制檯上工作嗎? –
我更新了我的問題。這是當我試圖創建一個項目與「項目關係」。 – sandelius
只是想知道如何在控制器中處理創建vs更新操作?有什麼區別? – Abram