2012-11-11 78 views
2

我有我的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

+0

聽起來像是你的模型的問題,你能分享嗎?那個'''User.create!''在控制檯上工作嗎? –

+0

我更新了我的問題。這是當我試圖創建一個項目與「項目關係」。 – sandelius

+0

只是想知道如何在控制器中處理創建vs更新操作?有什麼區別? – Abram

回答

0

要存儲users_ids模型需要保存,這就是方式,它沒有工作。因此,現在我將這些ID存儲在創建操作中,並且在保存項目後直接添加它們。

+0

難道你是在絆倒這個驗證錯誤嗎? http://stackoverflow.com/questions/21239640/rails-nested-attributes-does-not-create-parent/ – rlecaro2