0

我在 devise_invitable 中覆盖了 InvitationsController 的 create 方法,其原始代码如下所示:

  def create
    self.resource = resource_class.invite!(resource_params, current_inviter)

    if resource.errors.empty?
      set_flash_message :notice, :send_instructions, :email => self.resource.email
      respond_with resource, :location => after_invite_path_for(resource)
    else
      respond_with_navigational(resource) { render :new }
    end
  end

我正在尝试将一些 fields_for 添加到邀请表单中,以便在此控制器中创建成员时可以构建与成员关联的一些对象。我可以通过添加类似的东西来明确地做到这一点

    resource.my_associations.build(params[:my_association])

有没有办法概括构建语句?也许从参数中暗示类名并在事先不知道它叫什么的情况下建立关联?

4

1 回答 1

1

如果 params 哈希仅包含您的关联名称,那么您可以编写类似

params.each do |association, attributes|
  resource.send(association.to_s.pluralize).build(attributes)
end
于 2013-02-18T12:01:28.133 回答