相关记录未更新

时间:2014-02-24 02:47:37

标签: ruby-on-rails ruby-on-rails-4 many-to-many associations

在我的Rails 4应用程序中,我有用户,每个用户可以属于任意数量的组织,但这种关系也可以是'member''administrator'

我有三个模型:OrganizationUserUserOrganizationRelationship包含user_id:integerorganization_id:integerrelationship:string

class Organization < ActiveRecord::Base
    has_many :user_organization_relationships
    has_many :users, :through => :user_organization_relationships

    accepts_nested_attributes_for :user_organization_relationships
end

class User < ActiveRecord::Base
    has_many :user_organization_relationships
    has_many :organizations, through: :user_organization_relationships
end

class UserOrganizationRelationship < ActiveRecord::Base
    belongs_to :user
    belongs_to :organization

    self.primary_key = :user_id

    Administrator = 'administrator'
    Member = 'member'
end

我创建了一个表单,可以修改每个成员的关系类型

= form_for @organization do |f|
    = f.fields_for :user_organization_relationship do |u|
        = u.label :relationship, @organization.users[u.index].username
        = u.select :relationship, options_for_select([UserOrganizationRelationship::Administrator, UserOrganizationRelationship::Member])

我遇到的问题是,当用户提交表单时,user_organization_relationship中的记录不会更新,我也不会收到任何错误。这是接收帖子数据的控制器:

class OrganizationsController < ApplicationController
    ...
    def update
        if @organization.update!(organization_params)
            redirect_to @organization, notice: 'Organization was successfully updated.'
        else
            render action: 'edit'
        end
    end

    private
        def organization_params
            params.require(:organization).permit(user_organization_relationships_attributes: [:id, :user_id, :organization_id, :relationship])
        end
    ...
end

调试更新方法显示参数通过帖子数据和organization_params过滤器。

0 个答案:

没有答案